multipartResolver.isMultipart(request)没有上传文件 这里返回的也是true
来源:8-8 商品编辑之后端开发下
宝慕林1004770
2017-10-31
if (multipartResolver.isMultipart(request)) {
multipartRequest = (MultipartHttpServletRequest) request;
// 取出缩略图,构建thumbnail对象
CommonsMultipartFile thumbnailFile = (CommonsMultipartFile) multipartRequest.getFile("thumbnail");
thumbnail = new ImageHolder(thumbnailFile.getOriginalFilename(), thumbnailFile.getInputStream()
这段代码有问题啊 我前台并没有上传任何文件 但是还是进了if 调试发现multipartResolver.isMultipart(request)这里返回的永远是true 为什么啊
写回答
1回答
-
同学你好,现在是会报错还是会有什么影响吗?multipartResolver.isMultipart(request)这个是用来过滤非法的外部请求,咱们这边提交过去的请求因为头部带有multi的字样所以会返回true。后面会讲重构的,重构后会合理许多,后面咱们会有这个判断
// 若请求中存在文件流,则取出相关的文件(包括缩略图和详情图) if (multipartResolver.isMultipart(request)) { thumbnail = handleImage(request, thumbnail, productImgList); }private ImageHolder handleImage(HttpServletRequest request, ImageHolder thumbnail, List<ImageHolder> productImgList) throws IOException { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // 取出缩略图并构建ImageHolder对象 CommonsMultipartFile thumbnailFile = (CommonsMultipartFile) multipartRequest.getFile("thumbnail"); if (thumbnailFile != null) { thumbnail = new ImageHolder(thumbnailFile.getOriginalFilename(), thumbnailFile.getInputStream()); } // 取出详情图列表并构建List<ImageHolder>列表对象,最多支持六张图片上传 for (int i = 0; i < IMAGEMAXCOUNT; i++) { CommonsMultipartFile productImgFile = (CommonsMultipartFile) multipartRequest.getFile("productImg" + i); if (productImgFile != null) { // 若取出的第i个详情图片文件流不为空,则将其加入详情图列表 ImageHolder productImg = new ImageHolder(productImgFile.getOriginalFilename(), productImgFile.getInputStream()); productImgList.add(productImg); } else { // 若取出的第i个详情图片文件流为空,则终止循环 break; } } return thumbnail; }代码里面会做thumbnailFile是否为空的判断,这样即便跳过isMultipart,也不会被空值影响了
022019-10-18
相似问题