我有一个Java动态Web项目,我正在使用TomCat v7.0。
我是网络项目的新手,我不太明白如何在我的一个jsp页面上传文件。由于我的项目只是本地的,我想我可以使用一个多部分表单,其中人将选择文件(这部分很好),然后从我的Servlet中检索文件路径。我不能完成这部分,它似乎只给我文件的名称,而不是它的整个路径。
有人能指出我正确的方向吗?我已经阅读了几篇关于Apache文件上传和从多部分表单中检索信息的帖子,但似乎没有任何帮助。
如何从表单中获取文件路径,或者如何在Java类中使用上载的文件?
提前致谢。
的.jsp:
<form method="post" action="upload" enctype="multipart/form-data">
<input type="file" name="filePath" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"></input>
<input type="submit" value="Enviar"></input>
</form>
Java Servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("<html><body>");
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();
out.println("<h1>"+fieldname+" / "+fieldvalue+"</h1>");
}
else
{
// Process form file field (input type="file").
String fieldname = item.getFieldName();
String filename = item.getName();
InputStream filecontent = item.getInputStream();
String s = filecontent.toString();
out.println("<h1>"+s+" / "+filename+"</h1>");
item.write(null);
}
}
}
catch (FileUploadException e)
{
throw new ServletException("Cannot parse multipart request.", e);
}
catch (Exception e)
{
e.printStackTrace();
}
out.println("</body></html>");
}
答案 0 :(得分:1)
不提供文件路径是浏览器的安全功能。
您的代码(InputStream filecontent
)中提供了文件内容,因此您可以使用它或使用FileItem
上的一种便捷方法,例如
item.write(new File("/path/to/myfile.txt"));