0
我有一個Java動態Web項目,而且我正在使用TomCat v7.0。使用Java Servlet上傳文件
我是網絡項目的新手,我不太瞭解如何在一個我的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>");
}
你好,謝謝你的回答!我認爲這種方式來獲取文件(使用InputStream)確實是可行的。但是,你能向我解釋'item.write()'的功能嗎? –