weui多张图片上传前端+后台

一开始搞这个玩意我用原生的html来写是真的丑,最后网上找了很多但是没什么完整的,所以自己写了个完整的,大神轻喷

前端代码用的是weUI封装好的样式(这里我加了最多三张的限制),可以调动相机

<div class="weui-gallery" id="gallery">  
            <span class="weui-gallery__img" id="galleryImg"></span>  
            <div class="weui-gallery__opr">  
                <a href="javascript:" class="weui-gallery__del">  
                    <i class="weui-icon-delete weui-icon_gallery-delete" style="margin-bottom: 50px"></i>  
                </a>  
            </div>  
        </div>  
	<div class="weui-cells weui-cells_form">  
            <div class="weui-cell">  
                <div class="weui-cell__bd">  
                    <div class="weui-uploader">  
                        <div class="weui-uploader__hd">  
                            <p class="weui-uploader__title">图片上传(最多三张):</p>  
                        </div>  
                        <div class="weui-uploader__bd">  
                            <ul class="weui-uploader__files" id="uploaderFiles">  
                                  
                            </ul>  
                            <div class="weui-uploader__input-box">  
                                <input id="uploaderInput" class="weui-uploader__input zjxfjs_file" type="file" accept="image/*" multiple="" capture="camera">  
                            </div>  
                        </div>  
                    </div>  
                </div>  
            </div>  
        </div>  

js代码 基本还是weui的代码,里面添加了一些限制和修改了一部分;这个地方根据网友的修改,更改fileArr.splice(index,index)为

fileArr.splice(index,1);

$(function() {  
	        var tmpl = '<li class="weui-uploader__file" style="background-image:url(#url#)"></li>',  
	            $gallery = $("#gallery"),  
	            $galleryImg = $("#galleryImg"),  
	            $uploaderInput = $("#uploaderInput"),  
	            $uploaderFiles = $("#uploaderFiles");  
            $uploaderInput.on("change", function(e) {  
                var src, url = window.URL || window.webkitURL || window.mozURL,  
                files = e.target.files;
                var length=fileArr.length;
                for(var i = 0, len = files.length; i < len; ++i) {  
                    var file = files[i];
                    if(length + i + 1 > 3) {
                        break;
                    }  
  					fileArr.push(file);
                    if(url) {  
                        src = url.createObjectURL(file);  
                    } else {  
                        src = e.target.result;  
                    }  
                    $uploaderFiles.append($(tmpl.replace('#url#', src)));  
                }  
                checkPhotoSize();
            }); 
            
	        //控制显示三张以内照片
	        function checkPhotoSize(){
                if(fileArr.length>2){
                	$(".weui-uploader__input-box").hide();
                }else{
                	$(".weui-uploader__input-box").show();
                }
	        }
	             
	        var index; //第几张图片  
	        $uploaderFiles.on("click", "li", function() {  
	            index = $(this).index();  
	            $galleryImg.attr("style", this.getAttribute("style"));  
	            $gallery.fadeIn(100);  
	        });  
	        $gallery.on("click", function() {  
	            $gallery.fadeOut(100);  
	        });  
	        //删除图片  
	        $(".weui-gallery__del").click(function() {  
	            $uploaderFiles.find("li").eq(index).remove();
	            fileArr.splice(index,1);
	            checkPhotoSize();  
	        });

js提交文件到后台

var fileArr=new Array();这里需要一个全局变量来接受文件

if(fileArr.length!=0){
			          		var formData = new FormData();
			          		for(var i = 0;i<fileArr.length;i++){
			          			formData.append("file[]",fileArr[i]);
			          		}
			        		$.ajax({
								    url: "../../xxx/xxx.do",
								    type: "POST",  
								    async: false,  
								    cache: false, 
								    processData: false,// 告诉jQuery不要去处理发送的数据
								    contentType: false,// 告诉jQuery不要去设置Content-Type请求头
								    data: formData,
								    success: function(data){
								    }
								});
						}
			          	$.toast("保存成功", 5000);
			          	window.location.href = "xxxx.html";
		          	}else{
		          		$.toast("未知错误,请于管理员联系", 2000);
		          	}

java后台接收代码 (这个后台代码也是从网上找的,但是网上代码有很多问题,根据实际来改)

        @ResponseBody
	@RequestMapping("/xxxx.do")
	public String uploadPictureList( HttpServletRequest request) throws Exception{
	    MultipartHttpServletRequest muRequest =(MultipartHttpServletRequest) request;
		List<MultipartFile> files = muRequest.getFiles("file[]");
		
            File targetFile=null;
	    String msg="";//返回存储路径
	    int code=1;
	    List imgList=new ArrayList();
	    /*if (files!=null && files.length>0) {
	        for (int i = 0; i < files.length; i++) {*/
	    if (files!=null && files.size()>0) {
	        for (int i = 0; i < files.size(); i++) {
	            //String fileName=files[i].getOriginalFilename();//获取文件名加后缀
	        	String fileName=files.get(i).getOriginalFilename();//获取文件名加后缀
	            if(fileName!=null&&fileName!=""){   
	                String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() +"/upload/imgs/";//存储路径
	                String path = request.getSession().getServletContext().getRealPath("upload/imgs"); //文件存储位置
	                String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());//文件后缀
	                fileName=new Date().getTime()+"_"+new Random().nextInt(1000)+fileF;//新的文件名

	                //先判断文件是否存在
	                String fileAdd = DateUtil.formatDate(new Date(),"yyyyMMdd");
	                File file1 =new File(path+"//"+fileAdd); 
	                //如果文件夹不存在则创建    
	                if(!file1 .exists()  && !file1 .isDirectory()){       
	                    file1 .mkdirs();  
	                }
	                targetFile = new File(file1, fileName);
	                //targetFile = new File(path);
	                //System.out.println(targetFile+"xc");
	                try {
	                   // files[i].transferTo(targetFile);
	                    files.get(i).transferTo(targetFile);
	                    msg=returnUrl+fileAdd+"/"+fileName;
	                    imgList.add(msg);
	                } catch (Exception e) {
	                    e.printStackTrace();
	                }
	                
	            }
	        }
	    } 
	    
	    return JSONArray.fromObject(imgList).toString();
	}

 

如有不当之处请各位指教,如有疑问可加QQ:201239785或2228037791

如有bug大家在评论下面可以提出

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值