How to remove the Temp file PrimeFaces UploadedFile after processing?

PrimeFaces UploadedFile provides only an InputStream, not the file itself. How to remove it after stream processing?

+5
source share
2 answers

PrimeFaces uses Apache Commons FileUpload under the covers for this. It will create the file as a temporary file, and therefore, the file will be automatically deleted if there are no open Fileand InputStreamreferences to it when you run the Java Garbage Collector.

So, if you can be absolutely sure that after completion InputStreamafter processing (in the block finally!), You do not need to worry about cleaning.

+7
source

, , . JBoss 2.4.3 ​​ JSF 2.0 Servlet 2.4. ,

FileCleaningTracker - Apache.

1:

org.primefaces.webapp.filter.FileUploadFilter

@Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        boolean isMultipart = ServletFileUpload.isMultipartContent(httpServletRequest);
        if (isMultipart) {
            if (logger.isLoggable(Level.FINE))
                logger.fine("Parsing file upload request");

            FileCleaningTracker fileCleaningTracker = FileCleanerCleanup.getFileCleaningTracker(ContextConfigServlet.SERVLET_CONTEXT);
            DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
            diskFileItemFactory.setFileCleaningTracker(fileCleaningTracker);

            if (thresholdSize != null)
                diskFileItemFactory.setSizeThreshold(Integer.valueOf(thresholdSize).intValue());
            if (uploadDir != null)
                diskFileItemFactory.setRepository(new File(uploadDir));

            ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
            MultipartRequest multipartRequest = new MultipartRequest(httpServletRequest, servletFileUpload);

            if (logger.isLoggable(Level.FINE))
                logger.fine("File upload request parsed succesfully, continuing with filter chain with a wrapped multipart request");

            filterChain.doFilter(multipartRequest, response);

        } else {
            filterChain.doFilter(request, response);
        }

    }

, , ServletContext , request.getSession.getServletContext... ,

2:

web.xml param

<filter-class>com.sf.server.filter.FileUploadFilter_</filter-class>     

.

+2

All Articles