file选择文件传输数据,写好的uploadServlet,

file选择文件传输数据,写好的uploadServlet,

代码段有详细解释



package servlet;

 

import java.io.IOException;

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.Iterator;

import java.util.List;

import java.util.UUID;

 

import
javax.servlet.http.HttpServletRequest;

import
javax.servlet.http.HttpServletResponse;

 

import
org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileItemFactory;

import
org.apache.commons.fileupload.FileUploadException;

import
org.apache.commons.fileupload.disk.DiskFileItemFactory;

import
org.apache.commons.fileupload.servlet.ServletFileUpload;

 

import db.MysqlUtil;

 

//import util.ListenerUploadProgress;

 

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import
javax.servlet.http.HttpServletRequest;

import
javax.servlet.http.HttpServletResponse;

 

/**

 *
Servlet implementation class UploadServlet

 */

@WebServlet("/UploadServlet2")

public class UploadServlet2 extends
HttpServlet {

       private
static final long serialVersionUID = 1L;

      


   
/**

    
* @see HttpServlet#HttpServlet()

    
*/

   
public UploadServlet2() {

       
super();

       
// TODO Auto-generated constructor stub

    }

 

       /**

        * @see HttpServlet#doGet(HttpServletRequest
request, HttpServletResponse response)

        */

       protected
void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {

              //
TODO Auto-generated method stub

              response.getWriter().append("Served
at: ").append(request.getContextPath());

       }

 

       /**

       * @see HttpServlet#doPost(HttpServletRequest
request, HttpServletResponse response)

        */

       protected
void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {

              //
TODO Auto-generated method stub

               //设置请求和响应的编码格式

              req.setCharacterEncoding("utf-8");

              resp.setContentType("text/html;charset=UTF-8");


              resp.setCharacterEncoding("utf-8");

       


              //表单

              String
imgfile = "";

       

              

       
//核心Api

       
FileItemFactory factory = new DiskFileItemFactory();

       
ServletFileUpload fileUpload = new ServletFileUpload(factory);

       


       
//判断是否是muitipart/form-data类型

       
if(!ServletFileUpload.isMultipartContent(req)) {

           
//resp.getWriter().println("表单的enctype属性不是multipart/form-data类型");

       
       System.out.println("表单的enctype属性不是multipart/form-data类型");

           
return;

       
}

       


       
//设置单个文件上传大小 8M

       
fileUpload.setFileSizeMax(8*1024*1024); 

       
//设置总上传文件大小(有时候一次性上传多个文件,需要有一个上限,此处为60M)

       
fileUpload.setSizeMax(60*1024*1024);

       
//设置上传监听器[参数为自定义的监听器]

      
// fileUpload.setProgressListener(new ListenerUploadProgress());

       
//解析请求

       
try {

           
List<FileItem> parseRequest = fileUpload.parseRequest(req);

           
//获取数据

           
for (FileItem fileItem : parseRequest) {

                //判断数据类型是不是普通的form表单字段

                if(!fileItem.isFormField()) {

                    //上传文件

                    String fileName =
fileItem.getName();

                    InputStream fileStream =
fileItem.getInputStream();

                    //定义保存的父路径(服务器部署相对的绝对路径)

                    String parentDir =
this.getServletContext().getRealPath("/upload");

                    //定义绝对路径

                    //String parentDir =
"D:\\eclipse-workspace-new\\myWish\\WebContent\\upload";

                    //使用UUID+文件名的方式,避免文件重名

                    String realFileName =
UUID.randomUUID().toString()+"-"+fileName;

                    //创建要保存的文件

                    File file = new
File(parentDir,realFileName);

                    //判断文件夹是否存在

                   
if(!file.getParentFile().exists()) {

                        //创建文件夹[多级文件夹]file.madir是创建单一文件夹

      
                 file.getParentFile().mkdirs();

                    }

                    

                    //创建输出流

                    OutputStream out = new
FileOutputStream(file);

                    //创建字节缓存

                    byte[] buffer = new byte[1024];

                    int len = -1;

                    //一次读取1kb(1024byte),返回-1表明读取完毕

                    while((len =
fileStream.read(buffer))!=-1) {

                        //一次写入1kb(1024byte)

                        out.write(buffer,0,
len);

                    }

                   
System.out.println(parentDir);

                   
System.out.println(realFileName);

                    imgfile = realFileName;

                    //冲刷流资源

      
             out.flush();

                    //关闭流

                    out.close();

                    fileStream.close();

                    

                }else {

                    //普通字段

                    

                    //字段名

           
        String fieldName =
fileItem.getFieldName();

                    //字段值中文乱码

                    String fieldValue =
fileItem.getString("UTF-8");

                    

                    

                   
System.out.println(fieldName+":"+fieldValue);

                }

           
}

       
} catch (FileUploadException e) {

           
e.printStackTrace();

       
} 

       
//请求转发

       
req.setAttribute("igurl",imgfile);

      
req.getRequestDispatcher("/suc.jsp").forward(req,resp);

      
//重定向 (不能带参数) contexpath根目录

      
resp.sendRedirect(req.getContextPath()+"/suc.jsp");

//           if(!imgfile.equals(""))
{

//                  System.out.println(imgfile);

//                  String
sql1 = "update news set imgurl=\""+imgfile+"\" where
newsID=2";

//                  int
flag = MysqlUtil.update(sql1);

//                  resp.getWriter().print(flag);

//           }      

              

       }

 

}

猜你喜欢

转载自blog.csdn.net/code_mzh/article/details/105498090