How to store a file on a server(web container) through a Java EE web application?

Posted by Yatendra Goel on Stack Overflow See other posts from Stack Overflow or by Yatendra Goel
Published on 2010-04-18T17:35:29Z Indexed on 2010/04/18 17:43 UTC
Read the original article Hit count: 296

Filed under:
|
|
|

I have developed a Java EE web application. This application allows a user to upload a file with the help of a browser. Once the user has uploaded his file, this application first stores the uploaded file on the server (on which it is running) and then processes it.

At present, I am storing the file on the server as follows:

try {
            FormFile formFile = programForm.getTheFile(); // formFile represents the uploaded file
            String path = getServlet().getServletContext().getRealPath("") + "/" + formFile.getFileName();
            System.out.println(path);
            file = new File(path);
            outputStream = new FileOutputStream(file);
            outputStream.write(formFile.getFileData());
        }

where, the formFile represents the uploaded file.

Now, the problem is that it is running fine on some servers but on some servers the getServlet().getServletContext().getRealPath("") is returning null so the final path that I am getting is null/filename and the file doesn't store on the server.

When I checked the API for ServletContext.getRealPath() method, I found the following:

public java.lang.String getRealPath(java.lang.String path)

Returns a String containing the real path for a given virtual path. For example, the path "/index.html" returns the absolute file path on the server's filesystem would be served by a request for "http://host/contextPath/index.html", where contextPath is the context path of this ServletContext.

The real path returned will be in a form appropriate to the computer and operating system on which the servlet container is running, including the proper path separators. This method returns null if the servlet container cannot translate the virtual path to a real path for any reason (such as when the content is being made available from a .war archive).

So, Is there any other way by which I can store files on those servers also which is returning null for getServlet().getServletContext().getRealPath("")

© Stack Overflow or respective owner

Related posts about java

Related posts about j2ee