Javaでファイルのアップロードをする場合、Servlet API 3.0以前では、非常に大変でした。
ところが、Servlet API 3.0になって、enctype=multipart/form-dataの処理が非常に楽になりました。
(昔は、Jakarta Commons FileUploadなんてものがありました。・・が、こんなのなくてもできちゃいます。)
Partの捌きあたりが優秀すぎてやることがありません。ファイルまで作れちゃいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; public class FileUploadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Part part = request.getPart("file"); String name = getFileName(part); part.write("/home/hogehoge/contents/" + name); } private String getFileName(Part part) { String[] headerArrays = part.getHeader("Content-Disposition").split(";"); String fileName = null; for (String head : headerArrays) { if (head.trim().startsWith("filename")) { fileName = head.substring(head.indexOf('"')).replaceAll("\"", ""); } } return fileName; } } |