使用MultipartHttpServletRequest进行文件上传

发现MultipartHttpServletRequest是不能用在post请求的,但是我这里又有很多的数据要传到后台保存,鱼和熊掌必须要兼得,请教了下解决办法有,就是数据和图片用ajax分开保存。下面是操作
HTML部分:

<div class="col-md-6 form-group">
                <div class="col-md-12">
                <input type="hidden" name="imgUrl"  id="imgUrl"/>
                <input type="file" name="logoFile" id="logoFile" multiple="multiple" accept="i image/x-png, image/jpeg, image/gif " onchange="setImg(this);" >  //使用onchange事件做上传图片操作
                </div>
                <span><img id="imgShow" src="" width="150" height="150"/></span>
            </div>

JS部分:

function setImg(obj) {//用于进行图片上传,返回地址
    var f = $(obj).val();
    console.log(f);
    if (f == null || f == undefined || f == '') {
        return false;
    }
    if (!/\.(?:png|jpg|bmp|gif|PNG|JPG|BMP|GIF)$/.test(f)) {
        alert("类型必须是图片(.png|jpg|bmp|gif|PNG|JPG|BMP|GIF)");
        $(obj).val('');
        return false;
    }
    var data = new FormData();
    $.each($(obj)[0].files, function (i, file) {
        console.log(file);
        data.append('file', file);
    });
    $.ajax({
        type: "POST",
        url: "/GoodsMaintain/uploadPicture",
        data: data,
        cache: false,
        contentType: false,    //不可缺
        processData: false,    //不可缺
        dataType: "json",
        success: function (data) {
            if (data.errMsg == "SUCCESS") {
                $("#imgUrl").val(data.imgUrl);//将地址存储好
                $("#imgShow").attr("src", rootPath + "itemsImg\\" + data.imgShow);//显示图片
            } else {
                alert("上传失败");
                $("#url").val("");
                $(obj).val('');
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("上传失败,请检查网络后重试");
            $("#url").val("");
            $(obj).val('');
        }
    });
}

同时在控制层重新写一个接收图片的方法

@ResponseBody
		@RequestMapping("/saveRecordYy1")
		public Map saveRecordYy1(HttpServletRequest request, HttpServletResponse response) throws IOException {
				String yyFileName1 = "";
				Map<String, Object> reMap = new HashMap<String, Object>();
			    MultipartHttpServletRequest request1 = (MultipartHttpServletRequest)request;//判断是否有文件
			    MultiValueMap<String, MultipartFile> multiFileMap = request1.getMultiFileMap();
			    Collection<List<MultipartFile>> values = multiFileMap.values();
			    if(values.size()>0){
			        for (List<MultipartFile> files:values) {
			            try{
			                for (MultipartFile file:files) {
			                	yyFileName1 = file.getOriginalFilename();
			                }
			                Map map = new HashMap();
							map.put("name", yyFileName1);
							
							reMap.put("status", "200");	
							reMap.put("result", map);	
							reMap.put("error", "");	
			            }catch (Exception e){
			            	e.printStackTrace();
							reMap.put("status", "202");
							reMap.put("error", "失败");
							reMap.put("result", "");
			            }
			        }
			    }else {
					reMap.put("status", "203");
					reMap.put("error", "文件为空");
					reMap.put("result", "");
			    }
			    return reMap;
		}

或者这样写

@ResponseBody
		@RequestMapping("/saveRecordYy1")
		public Object saveRecordYy1(HttpServletRequest request, HttpServletResponse response) throws IOException {
				MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request
       			 MultipartFile multipartFile = multipartHttpServletRequest.getFile("file");
		        String imgName = multipartFile.getOriginalFilename();
		        //  println("imgName---->" + imgName)
		        String img = Base64Img.GetImageInputStream(multipartFile.inputStream);
		        // println("img---->" + img)"/itemsImg/"
		        String imgPath = request.getSession().getServletContext().getRealPath("/") + "itemsImg\\";
		        //  println("imgPath---->" + imgPath)
		        Boolean success = Base64Img.GenerateImage(img, imgPath, imgName);//图片是否添加成功
		        JSONObject jsonResult = new JSONObject()
		        String errMsg = "false"
		        if (success) {
		            jsonResult.put("imgUrl", imgPath + imgName);
		            jsonResult.put("imgShow", imgName);
		            errMsg = "SUCCESS"
		        }
		        jsonResult.put("errMsg", errMsg)
		        render jsonResult;
		}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值