Naming an uploaded file without filepath
I am using the Jakarta Commons FileUpload library to upload a file from
an Intranet site to a directory on the UNIX box. This is working
correctly.
Except, when the file is transferred to the UNIX box, it is named with
the full file path from my local computer, rather than the original
file name
e.g.
I am uploading a file called spreadsheet.xls, which is located on my
desktop. The file uploads correctly but is named "D:\Documents and
Settings\user\Desktop\spreadsheet.xls" when it should be called
"spreadsheet.xls"
Does anyone know how to fix this?
I have included my code below, I do not have much experience and have
followed examples to get the code working.. so I am unsure what part
should be edited.
Thanks and Regards,
Laura
/**
* doPost method.
*
* @param req, res Servlet request and response
* @exception ServletException, IO Exception
* @return void
*/
protected void doPost ( HttpServletRequest req, HttpServletResponse
res ) throws ServletException, IOException
{
PrintWriter out = res.getWriter();
HttpSession session = req.getSession(true);
session.setMaxInactiveInterval(1200);
ServletContext context = getServletContext();
// For testing whether the form has posted with mulitpart encoding
boolean isMultipart = false;
if(!"post".equals(req.getMethod().toLowerCase()))
{
isMultipart = false;
}
String contentType = req.getContentType();
if(contentType == null)
{
isMultipart = false;
}
isMultipart = contentType.toLowerCase().startsWith("multipart/");
// check if the http request is a multipart request,
// in other words check that the http request can have uploaded files
if (isMultipart)
{
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
// Set upload parameters
// See Apache Commons FileUpload for more information
// http://jakarta.apache.org/commons/fileupload/using.html
servletFileUpload.setSizeMax(-1);
try
{
String directory = "";
// Parse the request
List items = servletFileUpload.parseRequest(req);
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext())
{
FileItem item = (FileItem) iter.next();
// the param tag directory is sent as a request parameter to
// the server
// check if the upload directory is available
if (item.isFormField())
{
String name = item.getFieldName();
if (name.equalsIgnoreCase("directory"))
{
directory = item.getString();
}
// retrieve the files
}
else
{
// the fileNames are urlencoded
String fileName = URLDecoder.decode(item.getName());
File file = new File(directory, fileName);
file = new File(BASE_DIRECTORY, file.getPath());
// retrieve the parent file for creating the directories
File parentFile = file.getParentFile();
if (parentFile != null)
{
parentFile.mkdirs();
}
// writes the file to the filesystem
item.write(file);
}
}
}
catch (Exception e)
{
e.printStackTrace();
res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
out.println("<font color=red>An Exception error
occurred.</font><br> Please try resubmitting the form later.");
}
res.setStatus(HttpServletResponse.SC_OK);
}
else
{
res.setStatus(HttpServletResponse.SC_BAD_REQUEST);
}
}