多图片上传预览删除

上传效果图如下:

插件下载地址:http://download.csdn.net/download/lethe0624/10151406

js文件可按需求进行修改
$(function () {
    var delParent;
    var defaults = {
        fileType: ["jpg", "png", "bmp", "jpeg"],   // 上传文件的类型
        fileSize: 1024 * 1024 * 10                  // 上传文件的大小 10M
    };
    /*点击图片的文本框*/
    $(".file").change(function () {
        var idFile = $(this).attr("id");
        var file = document.getElementById(idFile);
        var imgContainer = $(this).parents(".z_photo"); //存放图片的父亲元素
        var fileList = file.files; //获取的图片文件
        var input = $(this).parent();//文本框的父亲元素
        var imgArr = [];
        //遍历得到的图片文件
        var numUp = imgContainer.find(".up-section").length;
        var totalNum = numUp + fileList.length;  //总的数量
        if (fileList.length > 5 || totalNum > 5) {
            alert("上传图片数目不可以超过4个,请重新选择");  //一次选择上传超过10个 或者是已经上传和这次上传的到的总数也不可以超过10个
        } else if (numUp < 5) {
            fileList = validateUp(fileList);
            //$("#theForm").append($(this).clone().attr("id", Math.random()).css("display", "none"));

            for (var i = 0; i < fileList.length; i++) {
                var form = new FormData();
                form.append("imgFile", fileList[i]);
                $.ajax({
                    url: "http://localhost:8080/seller/goodsImagesUpload.htm",
                    type: 'POST',
                    data: form,
                    processData: false,
                    contentType: false,
                    beforeSend: function () {
                        console.log("正在进行,请稍候");
                    },
                    success: function (result) {
                        var data = $.parseJSON(result)
                        if (data.code === 0) {
                            console.log(data)
                        }
                    },
                    error: function (result) {
                        console.log("error");
                    }
                })
            }
            for (var i = 0; i < fileList.length; i++) {
                var imgUrl = window.URL.createObjectURL(fileList[i]);
                imgArr.push(imgUrl);
                var $section = $("<section class='up-section fl loading'>");
                imgContainer.prepend($section);
                var $span = $("<span class='up-span'>");
                $span.appendTo($section);

                var $img0 = $("<img class='close-upimg'>").on("click", function (event) {
                    event.preventDefault();
                    event.stopPropagation();
                    $(".works-mask").show();
                    delParent = $(this).parent();
                });
                $img0.attr("src", "../resources/style/system/front/default/images/img/a7.png").appendTo($section);
                var $img = $("<img class='up-img up-opcity'>");
                $img.attr("src", imgArr[i]);
                $img.appendTo($section);
                var $p = $("<p class='img-name-p'>");
                $p.html(fileList[i].name).appendTo($section);
                var $input = $("<input id='taglocation' name='taglocation' value='' type='hidden'>");
                $input.appendTo($section);
                var $input2 = $("<input id='tags' name='tags' value='' type='hidden'/>");
                $input2.appendTo($section);
            }
        }
        setTimeout(function () {
            $(".up-section").removeClass("loading");
            $(".up-img").removeClass("up-opcity");
        }, 450);
        numUp = imgContainer.find(".up-section").length;
        if (numUp >= 10) {
            $(this).parent().hide();
        }
    });


    $(".z_photo").delegate(".close-upimg", "click", function () {
        $(".works-mask").show();
        delParent = $(this).parent();
    });

    $(".wsdel-ok").click(function () {
        $(".works-mask").hide();
        var numUp = delParent.siblings().length;
        if (numUp < 11) {
            delParent.parent().find(".z_file").show();
        }
        delParent.remove();
    });

    $(".wsdel-no").click(function () {
        $(".works-mask").hide();
    });

    function validateUp(files) {
        // debugger;
        var arrFiles = [];//替换的文件数组
        for (var i = 0, file; file = files[i]; i++) {
            //获取文件上传的后缀名
            var newStr = file.name.split("").reverse().join("");
            if (newStr.split(".")[0] != null) {
                var type = newStr.split(".")[0].split("").reverse().join("");
                console.log(type + "===type===");
                if (jQuery.inArray(type, defaults.fileType) > -1) {
                    // 类型符合,可以上传
                    if (file.size >= defaults.fileSize) {
                        alert(file.size);
                        alert('您这个"' + file.name + '"文件大小过大');
                    } else {
                        // 在这里需要判断当前所有文件中
                        arrFiles.push(file);
                    }
                } else {
                    alert('您这个"' + file.name + '"上传类型不符合');
                }
            } else {
                alert('您这个"' + file.name + '"没有类型, 无法识别');
            }
        }
        return arrFiles;
    }
})

上传主要代码

public ModelAndView store_imgs_save(@RequestParam("file") MultipartFile[] files, HttpServletRequest request,HttpServletResponse response) {
String uploadFilePath = this.configService.getSysConfig().getUploadFilePath();
        String saveFilePathName = request.getSession().getServletContext().getRealPath("/") + uploadFilePath
                + File.separator + "store_slide";
        System.out.println("saveFilePathName=========" + saveFilePathName);
        // 判断file数组不能为空并且长度大于0
        if (files != null && files.length > 0) {
            // 循环获取file数组中得文件
            for (int i = 0; i < files.length; i++) {
                MultipartFile file = files[i];
                try {
                    // 获取存取路径
                    String filePath = saveFilePathName + "//" + file.getOriginalFilename();
                    // String filePath = request.getSession().getServletContext().getRealPath("/") +
                    // "upload/" + file.getOriginalFilename();
                    // 转存文件
                    file.transferTo(new File(filePath));
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
Stping.xml配置
    <!--文件上传设置-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize">
            <value>10485760</value><!-- 文件上传最大为10M -->
        </property>
        <property name="maxInMemorySize" value="4096" />
        <property name="resolveLazily" value="true" />
    </bean>

js简单图片上传预览:

<body>
    <input type="file">
    <br>
    <div id="preview"></div>
    <script src="js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        $("input:file").change(function(e){
            //var f = $("input:file").val();
            var file = e.target.files[0];
            var img = new Image(), url = img.src = URL.createObjectURL(file);
            var $img = $(img);
            img.onload = function() {
                URL.revokeObjectURL(url);
                $("#preview").html($img);
            }
        });

    </script>
</body>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,ElementUI提供了el-upload组件来实现上传多张图片并支持预览删除的功能。你可以通过设置el-upload组件的属性来实现这些功能,具体步骤如下: 1. 在Vue组件中引入el-upload组件 ```javascript <template> <el-upload class="upload-demo" action="your-upload-api" :on-preview="handlePreview" :on-remove="handleRemove" :file-list="fileList" multiple list-type="picture-card"> <!--上传按钮--> <i class="el-icon-plus"></i> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </template> <script> export default { data() { return { fileList: [], // 文件列表 }; }, methods: { // 预览图片 handlePreview(file) { console.log(file); }, // 删除图片 handleRemove(file, fileList) { console.log(file, fileList); }, }, }; </script> ``` 2. 设置el-upload组件的属性 - `action`: 文件上传的API地址 - `on-preview`: 预览图片的回调函数 - `on-remove`: 删除图片的回调函数 - `file-list`: 已上传的图片列表 - `multiple`: 是否支持多选 - `list-type`: 列表显示方式,这里设置成`picture-card`以卡片形式显示 3. 实现预览删除的回调函数 `handlePreview`函数接收一个参数`file`,表示当前预览的文件对象,你可以通过调用浏览器内置的图片预览方法来实现图片预览功能。 `handleRemove`函数接收两个参数`file`和`fileList`,分别表示当前删除的文件对象和文件列表。你可以在这个函数里面通过操作`fileList`中的元素来实现删除图片的功能。 以上就是实现ElementUI上传多张图片并支持预览删除的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值