public File doAttachment(HttpServletRequest request)
			throws ServletException, IOException {
		File file = null;
		DiskFileItemFactory factory = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(factory);
		try {
			List<?> items = upload.parseRequest(request);
			Iterator<?> itr = items.iterator();
			while (itr.hasNext()) {
				FileItem item = (FileItem) itr.next();
				if (item.isFormField()) {
					parameters
							.put(item.getFieldName(), item.getString("UTF-8"));
				} else {
					File tempFile = new File(item.getName());
					file = new File(sc.getRealPath("/") + savePath, tempFile
							.getName());
					item.write(file);
				}
			}
		} catch (Exception e) {
			Logger logger = Logger.getLogger(SendAttachmentMailServlet.class);
			logger.error("邮件发送出了异常", e);
		}
		return file;
	}
Example #2
0
 @Override
 public int compareTo(FileItem another) {
   if (another.isDir()) {
     return -1;
   } else {
     return this.getName().compareTo(another.getName());
   }
 }
Example #3
0
 /**
  * Add listener to fileItem which is going to be automatically destroyed when the servlet is
  * destroyed
  *
  * @param pipelineContext PipelineContext
  * @param fileItem FileItem
  */
 public static void deleteFileOnContextDestroyed(
     PipelineContext pipelineContext, final FileItem fileItem) {
   // Try to delete the file on exit and on session termination
   final ExternalContext externalContext =
       (ExternalContext) pipelineContext.getAttribute(PipelineContext.EXTERNAL_CONTEXT);
   ExternalContext.Application application = externalContext.getApplication();
   if (application != null) {
     application.addListener(
         new ExternalContext.Application.ApplicationListener() {
           public void servletDestroyed() {
             deleteFileItem(fileItem, APPLICATION_SCOPE);
           }
         });
   } else {
     logger.debug(
         "No application object found so cannot register temporary file deletion upon session destruction: "
             + fileItem.getName());
   }
 }
Example #4
0
 /**
  * Add listener to fileItem which is going to be automatically destroyed on session destruction
  *
  * @param pipelineContext PipelineContext
  * @param fileItem FileItem
  */
 public static void deleteFileOnSessionTermination(
     PipelineContext pipelineContext, final FileItem fileItem) {
   // Try to delete the file on exit and on session termination
   final ExternalContext externalContext =
       (ExternalContext) pipelineContext.getAttribute(PipelineContext.EXTERNAL_CONTEXT);
   final ExternalContext.Session session = externalContext.getSession(false);
   if (session != null) {
     session.addListener(
         new ExternalContext.Session.SessionListener() {
           public void sessionDestroyed() {
             deleteFileItem(fileItem, SESSION_SCOPE);
           }
         });
   } else {
     logger.debug(
         "No existing session found so cannot register temporary file deletion upon session destruction: "
             + fileItem.getName());
   }
 }
Example #5
0
  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);
    }

    // ...
  }
  /**
   * Handles the HTTP <code>POST</code> method.
   *
   * @param request servlet request
   * @param response servlet response
   * @throws ServletException if a servlet-specific error occurs
   * @throws IOException if an I/O error occurs
   */
  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    String id_book = "", len = "";

    // Imposto il content type della risposta e prendo l'output
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    // La dimensione massima di ogni singolo file su system
    int dimensioneMassimaDelFileScrivibieSulFileSystemInByte = 10 * 1024 * 1024; // 10 MB
    // Dimensione massima della request
    int dimensioneMassimaDellaRequestInByte = 20 * 1024 * 1024; // 20 MB
    // Cartella temporanea
    File cartellaTemporanea = new File("C:\\tempo");

    try {
      // Creo un factory per l'accesso al filesystem
      DiskFileItemFactory factory = new DiskFileItemFactory();

      // Setto la dimensione massima di ogni file, opzionale
      factory.setSizeThreshold(dimensioneMassimaDelFileScrivibieSulFileSystemInByte);
      // Setto la cartella temporanea, Opzionale
      factory.setRepository(cartellaTemporanea);

      // Istanzio la classe per l'upload
      ServletFileUpload upload = new ServletFileUpload(factory);

      // Setto la dimensione massima della request, opzionale
      upload.setSizeMax(dimensioneMassimaDellaRequestInByte);

      // Parso la riquest della servlet, mi viene ritornata una lista di FileItem con
      // tutti i field sia di tipo file che gli altri
      List<FileItem> items = upload.parseRequest(request);

      /*
       *
       * Giro per tutti i campi inviati
       */
      for (int i = 0; i < items.size(); i++) {
        FileItem item = items.get(i);

        // Controllo se si tratta di un campo di input normale
        if (item.isFormField()) {
          // Prendo solo il nome e il valore
          String name = item.getFieldName();
          String value = item.getString();
          if (name.equals("id_book")) {
            id_book = value;
          }
          if (name.equals("len")) {
            len = value;
          }
        }
        // Se si stratta invece di un file ho varie possibilità
        else {
          // Dopo aver ripreso tutti i dati disponibili
          String fieldName = item.getFieldName();
          String fileName = item.getName();
          String contentType = item.getContentType();
          boolean isInMemory = item.isInMemory();
          long sizeInBytes = item.getSize();

          // scrivo direttamente su filesystem

          File uploadedFile =
              new File("/Users/Babol/Desktop/dVruhero/aMuseWebsite/web/userPhoto/" + fileName);
          // Solo se veramente ho inviato qualcosa
          if (item.getSize() > 0) {
            item.write(uploadedFile);
            DBconnection.EditCoverBook(fileName, Integer.parseInt(id_book));
          }
        }
      }

      // out.println("</body>");
      // out.println("</html>");

    } catch (Exception ex) {
      System.out.println("Errore: " + ex.getMessage());
    } finally {
      if (len.equals("ita")) response.sendRedirect("modify_book.jsp?id_book=" + id_book);
      else response.sendRedirect("modify_book_eng.jsp?id_book=" + id_book);
    }
  }
  /**
   * 文件的上传服务
   *
   * @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;
  }