这是使用了FileUpload上传组件的,解决了中文乱码问题了,而且删除了临时文件的。javascript
private Book uploadData(HttpServletRequest request) { Book book = new Book(); try{ //1.获得解析器工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //2.获得解析器 ServletFileUpload upload = new ServletFileUpload(factory); //设置编码 upload.setHeaderEncoding("UTF-8"); //为上传表单,则调用解析器解析上传数据 List<FileItem> list = upload.parseRequest(request); //FileItem //遍历list,获得用于封装第一个上传输入项数据fileItem对象 for(FileItem item : list){ if(item.isFormField()){ //获得的是普通输入项 String name = item.getFieldName(); //获得输入项的名称 String value = item.getString("UTF-8"); //使用BeanUtils封装数据 BeanUtils.setProperty(book, name, value); }else{ //获得上传输入项 //获得上传文件名全路径 String filename = item.getName(); //截取文件名 filename = filename.substring(filename.lastIndexOf("\\")+1); InputStream in = item.getInputStream(); //获得上传数据 int len = 0; byte buffer[]= new byte[1024]; //若是没有这个目录,就建立它 String savepath = this.getServletContext().getRealPath("/image"); File file = new File(savepath); if (!file.exists()) { file.mkdir(); } FileOutputStream out = new FileOutputStream(savepath + "\\" + filename); while((len=in.read(buffer))>0){ out.write(buffer, 0, len); } //设置图片的名字 book.setImage(filename); in.close(); out.close(); //关闭临时文件 item.delete(); } } }catch (Exception e) { e.printStackTrace(); } return book; }