servlet3.0的学习(三)

文件的上传 
Upload.java 
Java代码   收藏代码
  1. import java.io.File;  
  2. import java.io.FileOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.PrintWriter;  
  6. import java.util.UUID;  
  7. import javax.servlet.ServletConfig;  
  8. import javax.servlet.ServletException;  
  9. import javax.servlet.annotation.WebServlet;  
  10. import javax.servlet.http.HttpServlet;  
  11. import javax.servlet.http.HttpServletRequest;  
  12. import javax.servlet.http.HttpServletResponse;  
  13. import javax.servlet.http.Part;  
  14.   
  15.   
  16. @WebServlet(urlPatterns = {"/upload"})  
  17. public class Upload extends HttpServlet {  
  18.   
  19.     @Override  
  20.     public void init(ServletConfig config) throws ServletException {  
  21.         super.init(config);  
  22.     }  
  23.   
  24.     @Override  
  25.     protected void service(HttpServletRequest req, HttpServletResponse res)  
  26.             throws IOException, ServletException {  
  27.   
  28.         PrintWriter out = res.getWriter();  
  29.         InputStream is = null;  
  30.         FileOutputStream fos = null;  
  31.         String targetDirectory = req.getServletContext().getRealPath("/upload");  
  32.         try {  
  33.             for (Part p : req.getParts()) {  
  34.                 UUID id = UUID.randomUUID();  
  35.                 out.write("Part name: " + p.getName() + "<br/>\n");  
  36.                 out.write("Size: " + p.getSize() + "<br/>\n");  
  37.                 out.write("Content Type: " + p.getContentType() + "<br/>\n");  
  38.                 is = p.getInputStream();  
  39.   
  40.   
  41.                 File file = new File(targetDirectory, id.toString() + ".jpg");  
  42.                 fos = new FileOutputStream(file);  
  43.                 out.write("Header Names:");  
  44.                 for (String name : p.getHeaderNames()) {  
  45.                     out.write(" " + name);  
  46.                 }  
  47.                 out.write("<br/><br/>\n");  
  48.   
  49.                 while (true) {  
  50.                     int bytedata = is.read();  
  51.                      if (bytedata == '\n') out.write("<br/>");  
  52.                     if (bytedata == -1) {  
  53.                         break;  
  54.   
  55.                     }  
  56.                     fos.write(bytedata);  
  57.                 }  
  58.   
  59.             }  
  60.         } finally {  
  61.             if (is != null) {  
  62.                 is.close();  
  63.   
  64.             }  
  65.             if (out != null) {  
  66.                 out.close();  
  67.   
  68.             }  
  69.         }  
  70.     }  
  71. }  


index.html 
Java代码   收藏代码
  1. <html>  
  2. <head>  
  3.   <title>File Upload Example</title>  
  4. </head>  
  5.   
  6. <body>  
  7.   <form action="upload" method="post"  
  8.         enctype="multipart/form-data">  
  9.     <h3>Choose files to upload.</h3>  
  10.     <input name="myFile" type="file" /> <br/>  
  11.     <input name="myFile2" type="file"/> <br/> <br/>  
  12.     <input value="upload" type="submit"/>  
  13.     <input type="reset"/> <br/>  
  14.   </form>  
  15. </body>  
  16. </html>  


讲解:javax.servlet.http.Interface Part,这个接口主要是用来接收提交形式为multipart/form-data POST 请求. 
void delete() :删除一个文件项目的底层存储,包括删除任何相关的临时磁盘文件 
java.lang.String getContentType():获取内容类型,如image/x-png, 
application/octet-stream 
java.lang.String getHeader(java.lang.String name):返回指定的MIME头 
java.util.Collection<java.lang.String> getHeaderNames():获取本部分的头名。 
java.io.InputStream getInputStream():返回当前文件的输入流 
java.lang.String getName():获取文件名,input的name 
long getSize():获取大小 
void write(java.lang.String fileName):写入本地硬盘,如果有多个文件需要保存时次方法并不能保证成功 

你可能感兴趣的:(servlet3.0的学习(三))