- package com.fileupload.servlet;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.tomcat.util.http.fileupload.FileItemFactory;
- import org.apache.tomcat.util.http.fileupload.FileItemIterator;
- import org.apache.tomcat.util.http.fileupload.FileItemStream;
- import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
- import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
- public class FileUpLoad extends HttpServlet {
- private static final long serialVersionUID = 1L;
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- //设置文件编码
- request.setCharacterEncoding("UTF-8");
- //判断form表单的enctype属性是否是 multipart/form-data
- boolean isMultipart = ServletFileUpload.isMultipartContent(request);
- if(isMultipart){
- //获取FileItemFactory
- FileItemFactory factory = new DiskFileItemFactory();
- //获取ServletFileUpload
- ServletFileUpload upload = new ServletFileUpload(factory);
- try {
- FileItemIterator iterator = upload.getItemIterator(request);
- while(iterator.hasNext()){
- FileItemStream fileItemStream = iterator.next();
- String fieldName = fileItemStream.getFieldName();
- String contentType = fileItemStream.getContentType();
- String name = fileItemStream.getName();
- int index = name.lastIndexOf("\\\\");
- name = name.substring(index + 1);
- System.out.println("fieldName:"+fieldName);
- System.out.println("contentType:"+contentType);
- System.out.println("name:"+name);
- if(!fileItemStream.isFormField()){
- InputStream is = fileItemStream.openStream();
- OutputStream os = new FileOutputStream(new File("D:/codeimages",name));
- int length = 0 ;
- byte [] buf = new byte[1024];
- while( (length = is.read(buf) ) != -1){
- os.write(buf, 0, length);
- }
- is.close();
- os.close();
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }else{
- System.out.println("请将form表单的enctype属性设置为multipart/form-data");
- }
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/1102201511783.html
来源: http://www.codesnippet.cn/detail/1102201511783.html