请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

multipartResolver.isMultipart(request)没有上传文件 这里返回的也是true

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回答

翔仔 2017-10-31 21:19:34

同学你好,现在是会报错还是会有什么影响吗?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,也不会被空值影响了

0 回复 有任何疑惑可以回复我~
  • 提问者 宝慕林1004770 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-03-12 17:33:59
  • 学到了,对handleImage有疑问,搜搜历史的提问,豁然开朗,也免得老问翔仔同样的问题
    回复 有任何疑惑可以回复我~ 2019-10-18 09:40:46
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号