`
2277259257
  • 浏览: 497592 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Servlet实现文件上传-----2

 
阅读更多

package shopping.shoppingServlet;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.FileItem;

import shopping.shoppingDao.ComputerDao;
import shopping.shoppingDao.shoppingDaoImp.ComputerDaoImp;
import shopping.shoppingVo.Computer;

 

public class FileUploadServlet extends HttpServlet {
 @SuppressWarnings("unchecked")
 public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
  // step1 创建一个工厂类的实例,该实例为解析器提供了缺省的配置
  DiskFileItemFactory factory = new DiskFileItemFactory();
  // step2 创建一个解析器
  ServletFileUpload sfu = new ServletFileUpload(factory);
  // step3 使用解析器解析
  try {
   // 解析乊后,会将表单中的数据转换成一个个FileItem 对象。一个表单域中的数据对应于一个FileItem 对象。
   List<FileItem> items = sfu.parseRequest(request);
   // step4 遍历 items 集合
   for (int i = 0; i < items.size(); i++) {
    FileItem item = items.get(i);
    // 读表单域中的数据时,要区分表单域的类型
    if (item.isFormField()) {
     // 普通表单域
     String username = item.getString();
     System.out.println(username);
    } else {
     // 文件上传表单域
     ServletContext sctx = getServletContext();
     String path = sctx.getRealPath("img");
     // 获得文件名(客户端文件的保存路径)
     String fileName = item.getName();

     //文件的名称
     String filename = fileName.substring(fileName.lastIndexOf("\\")+1); //自己添的(只要文件名,不是路径)
     //用上传文件的路径,创建流
     File file = new File(path + "\\" + filename);
     //上传
     item.write(file);

 

 


     /**
      * 将文件名保存在数据库中,用于显示或下载文件时,查询出文件名+服务器中存放文件的目录==文件路径
      */
     Computer c=new Computer();
     c.setPic(pathJ);
     ComputerDao dao=new ComputerDaoImp();
     dao.insert(c);
     
     /**
      * 文件名保存后,再查询后返回到file.jsp实时显示
      */
     
     response.sendRedirect("/jsp/web/file.jsp");
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics