六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 50|回复: 0

利用servlet实现上传

[复制链接]

升级  77%

131

主题

131

主题

131

主题

举人

Rank: 3Rank: 3

积分
431
 楼主| 发表于 2013-1-15 02:44:58 | 显示全部楼层 |阅读模式
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UploadServlet extends HttpServlet { /**  * Destruction of the servlet. <br>  */ public void destroy() {  super.destroy(); // Just puts "destroy" string in log  // Put your code here } /**  * The doPost method of the servlet. <br>  *  * This method is called when a form has its tag value method equals to post.  *   * @param request the request send by the client to the server  * @param response the response send by the server to the client  * @throws ServletException if an error occurred  * @throws IOException if an error occurred  */  @SuppressWarnings("unchecked") public void doPost(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {  System.out.println("hello");    DiskFileItemFactory factory = new DiskFileItemFactory(); //磁盘文件工厂    String path = request.getRealPath("/upload");//上传路径    factory.setRepository(new File(path));  factory.setSizeThreshold(1024*1024);//如果所上传文件大于这个范围则存储在磁盘上,否则放到内存中    ServletFileUpload upload = new ServletFileUpload(factory);    List<FileItem> list = null;  try {   list = upload.parseRequest(request);  } catch (FileUploadException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }  for(FileItem item : list){   if(item.isFormField()){        String name = item.getFieldName();    String value = item.getString("gbk");        request.setAttribute(name, value);   }else{        String name = item.getFieldName();    String value = item.getName();        int start = value.lastIndexOf("\\");        String fileName = value.substring(start+1);        request.setAttribute(name, fileName);            try {     item.write(new File(path,fileName));//下面的所有东西用这一句话也可以实现    } catch (Exception e) {     // TODO Auto-generated catch block     e.printStackTrace();    }        //    OutputStream os = new FileOutputStream(new File(path,fileName));//    InputStream is = item.getInputStream();//    //    byte[] buffer = new byte[400];//    //    int length = 0;//    //    while((length=is.read(buffer))>0){//     //     os.write(buffer,0,length);//     //    }//   //    os.close();//    is.close();       }     }  request.getRequestDispatcher("/upload/result2.jsp").forward(request, response); } /**  * Initialization of the servlet. <br>  *  * @throws ServletException if an error occurs  */ public void init() throws ServletException {  // Put your code here }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表