public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); for (FileItem item : items) { if (item.isFormField()) { // Process regular form field (input type="text|radio|checkbox|etc", select, etc). String fieldname = item.getFieldName(); String fieldvalue = item.getString(); // ... (do your job here) } else { // Process form file field (input type="file"). String fieldname = item.getFieldName(); String filename = FilenameUtils.getName(item.getName()); InputStream filecontent = item.getInputStream(); // ... (do your job here) } } } catch (FileUploadException e) { throw new ServletException("Cannot parse multipart request.", e); } // ... }
/** * 文件的上传服务 * * @param request * @return * @throws FileUploadException * @throws IOException */ public FileRepository uploadFile(HttpServletRequest request) throws FileUploadException, IOException { boolean isMultipartContent = ServletFileUpload.isMultipartContent(request); FileRepository fileRepository = null; if (isMultipartContent) { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List<FileItem> items = upload.parseRequest(request); for (Iterator<FileItem> iterator = items.iterator(); iterator.hasNext(); ) { FileItem item = iterator.next(); InputStream inputStream = item.getInputStream(); // 获得文件名 String fileName = item.getName(); String fileExtension = FileUtil.getFileExtension(fileName); // 获得文件的Extension类型 MimeTypeExtension mimeTypeExtension = mimeTypeExtensionService.findByMimeTypeExtensionName(fileExtension); fileRepository = new FileRepository(); FixEntityUtil.fixEntity(fileRepository); String fileRepoId = fileRepository.getId(); fileRepository.setMimeTypeExtensionName(fileExtension); if (mimeTypeExtension.getMimeType() != null) { fileRepository.setMimeTypeName(mimeTypeExtension.getMimeType().getMimeTypeName()); } fileRepository.setFileName(fileName); String datePath = new SimpleDateFormat("yyyy/MM/dd").format(new Date()); String saveFilePath = Config.UPLOAD_FILE_PATH + "/" + datePath + "/"; File file = new File(saveFilePath); if (!file.exists()) { file.mkdirs(); } file = new File(saveFilePath + fileRepoId + ".xzsoft"); ByteArrayOutputStream out = new ByteArrayOutputStream(); int byteRead = 0; byte[] buffer = new byte[8192]; while ((byteRead = inputStream.read(buffer, 0, 8192)) != -1) { out.write(buffer, 0, byteRead); } inputStream.close(); // 将上传的文件变Base64加密过的字符串 String content = Base64.encode(out.toByteArray()); out.close(); // 将加密过后的数据存储到硬盘中 FileWriter fileWriter = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fileWriter); bw.write(content); bw.flush(); fileWriter.flush(); bw.close(); fileWriter.close(); } } else { throw new NotMultipartRequestException("上传的文件里面没有Multipart内容"); } return fileRepository; }