利用servlet实现上传
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;// // 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 }}
页:
[1]