上传图片出现类型转换失败异常

Field error in object 'xxxx' on field 'xxxx': rejected value [20129259128131.jpg];

出现类似错误,检查form表单属性是否写上enctype="multipart/form-data"。

upload.jsp

<form action="fileupdown/checkFileUpload" method="POST" enctype="multipart/form-data">
		File: <input type="file" name="file"/>
		Desc: <input type="text" name="desc"/>
		<input type="submit" value="上传数据"/>
	</form>

 

/**
	 * 证件管理之上传证件
	 * @param file
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping("/upfile")
	public String upWorkerCard(MultipartFile file,HttpServletRequest request,HttpServletResponse response){
		
		String DIRpath = request.getSession().getServletContext().getRealPath("/upload/workerCard");  
		System.out.println(DIRpath);
		if(file!=null){
		    //String fileName = file.getOriginalFilename();
			String contentType = file.getContentType();
			String suffixName=contentType.substring(contentType.indexOf("/")+1);
		    long fileName1 =new Date().getTime();
		    int rd = (int)((Math.random()*9+1)*100000);
		    String filename = String.valueOf(fileName1)+rd+"."+suffixName;
		    System.out.println(filename);
		    File targetFile = new File(DIRpath, filename);  
	        if(!targetFile.exists()){  
	            targetFile.mkdirs();  
	        }  
	        //保存  
	        try {  
	            file.transferTo(targetFile);  
	        } catch (Exception e) {  
	            e.printStackTrace();  
	        }  
			String sqlPath ="/upload/workerCard/"+filename;
			System.out.println(sqlPath);
			HttpSession session = request.getSession();
			if( (Integer)session.getAttribute("projectWorktypeId")>0){
				Worker worker = new Worker();
				if((Integer)session.getAttribute("id")>0 ){
					Integer id = (Integer)session.getAttribute("id");
					Integer   projectWorktypeId =(Integer)session.getAttribute("projectWorktypeId");
					worker.setId(id);
					worker.setProjectWorktypeId(projectWorktypeId);
					List<Worker> workerList =workerService.findAllWorkerByWhere(worker);
					if(workerList!=null){
						workerList.get(0).setWorkerScanFront(sqlPath);
						workerList.get(0).setWorkerScanBack(sqlPath);
						System.out.println("list:"+workerList.toString());
						int i = workerService.updateSqlpath(workerList.get(0));
						if(i>0){
						request.setAttribute("workerList", workerList);
						return "worker/checkCard";
						}
						return "404";//更新图片路径失败
					}
					return "404";//查询结果为0条数据
				}
				return "404";//id为空
			}
			return "log/userLog";//TODO  projectWorktypeId为空,应重新登录
		}
		return "404";//file图片为空
	}

另:java上传图片

public void uploadFile(HttpServletRequest req,HttpServletResponse resp){
		//临时文件夹
		File tempDir = new File(req.getSession().getServletContext().getRealPath("/WEB-INF/temp"));

		//第一个参数为单个文件最大大小
		DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(4 * 1024 * 1024,tempDir);
		ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);
		List<DiskFileItem> files;
		try {
			files = fileUpload.parseRequest(req);
		
		DiskFileItem file = files.get(0);
		if(file.getSize()<=0)
		{
			resp.getWriter().println("必须选择一个文件");
			return;
		}

		String fileName =  file.getName();
		String fileExt = FilenameUtils.getExtension(fileName).toLowerCase();
		if(!fileExt.equals("jpeg")&&!fileExt.equals("jpg")&&!fileExt.equals("png"))
		{
			resp.getWriter().println("只能上传图片");
			return;
		}
		File destFile = new File(req.getSession().getServletContext().getRealPath("upload/"+fileName));
		if(!destFile.exists()){  
			destFile.mkdirs();  
        }  

		FileOutputStream osDest = new FileOutputStream(destFile);
		IOUtils.copy(file.getInputStream(), osDest);
		IOUtils.closeQuietly(osDest);	
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

转载于:https://my.oschina.net/8824/blog/2961380

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值