Java Dynamic Web Project があり、TomCat v7.0 を使用しています。
私は Web プロジェクトに不慣れで、jsp ページの 1 つでファイルをアップロードする方法がよくわかりませんでした。私のプロジェクトはローカルのみを対象としているため、人がファイルを選択し (この部分は問題ありません)、後でサーブレットからファイル パスを取得するマルチパート フォームを使用できると考えました。ただし、この部分を完了することはできません。パス全体ではなく、ファイルの名前のみが表示されるようです。
誰かが私を正しい方向に向けることができますか? 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 サーブレット:
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>");
}