這是使用了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; }