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;
	}
 /**
  * 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());
   }
 }
 /**
  * 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());
   }
 }
Beispiel #4
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);
    }

    // ...
  }