java 代码
- import java.io.*;
- import java.util.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import com.oreilly.servlet.MultipartRequest;
- public class UploadTest extends HttpServlet {
- public void doPost(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException {
- res.setContentType("text/html");
- PrintWriter out = res.getWriter();
- try {
- // Blindly take it on faith this is a multipart/form-data request
- // Construct a MultipartRequest to help read the information.
- // Pass in the request, a directory to save files to, and the
- // maximum POST size we should attempt to handle.
- // Here we (rudely) write to /tmp and impose a 50 K limit.
- //一般来说dir,filesize,encoding,都是配置在web.xml里面,通过init()方法进行加载,为了直观,demo作者使用hardcode写死
- MultipartRequest multi =
- new MultipartRequest(req, "/tmp", 50 *1024 * 1024,
- new com.oreilly.servlet.multipart.DefaultFileRenamePolicy());
- out.println("<HTML>");
- out.println("<HEAD><TITLE>UploadTest</TITLE></HEAD>");
- out.println("<BODY>");
- out.println("UploadTest");
- // Print the parameters we received
- out.println("Params:");
- //遍历参数parameter
- Enumeration params = multi.getParameterNames();
- while (params.hasMoreElements()) {
- String name = (String)params.nextElement();
- String value = multi.getParameter(name);
- out.println(name + " = " + value);
- }
- // Show which files we received
- out.println("Files:");
- //遍历上传文件名,可通过文件名获取文件
- Enumeration files = multi.getFileNames();
- while (files.hasMoreElements()) {
- String name = (String)files.nextElement();
- String filename = multi.getFilesystemName(name);
- String original = multi.getOriginalFileName(name);
- String type = multi.getContentType(name);
- File f = multi.getFile(name);
- out.println("name: " + name);
- out.println("filename: " + filename);
- if (filename != null && !filename.equals(original)) {
- out.println("original file name: " + original);
- }
- out.println("type: " + type);
- if (f != null) {
- out.println("length: " + f.length());
- }
- }
- }
- catch (Exception e) {
- e.printStackTrace(out);
- }
- out.println("</BODY></HTML>");
- }
- }