文件上传
博客专区 > to_ln 的博客 > 博客详情
文件上传
to_ln 发表于3个月前
文件上传
  • 发表于 3个月前
  • 阅读 8
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 用HttpRequest读取上传文件

因框架原因,前段时间写文件导入时,用不了MultipartFile。最后使用的是HttpRequest来获取的文件,这里简单整理了一下。

1.准备工作:

所需jar包:commons-fileupload-1.2.jar,commons-io-1.4.jar

web.xml配置:

<servlet>
    <servlet-name>FilesUpload</servlet-name>
    <servlet-class>com.sun.upload.FilesUpload</servlet-class>
  </servlet>

<servlet-mapping>
    <servlet-name>FilesUpload</servlet-name>
    <url-pattern>/servlet/filesUpload</url-pattern>
  </servlet-mapping>

根据自己情况进行配置

2.接收上传文件

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

 


public class FilesUpload extends HttpServlet {
 
 /**
  *
  */
 private static final long serialVersionUID = 1L;

 public void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  

 try {
  //使用Apache文件上传组件处理文件上传步骤
  //创建一个DiskFileItemFactory工厂
  DiskFileItemFactory factory = new DiskFileItemFactory();
  //设置工厂的缓存区大小,当上传文件的大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录下
  factory.setSizeThreshold(1024 * 100);//设置缓存区的大小是100KB,默认10KB
  //创建一个文件上传解析器
  ServletFileUpload upload = new ServletFileUpload(factory);
  //解决上传文件中文乱码问题
  upload.setHeaderEncoding("utf-8");
  
        //判断上传来的数据是否是上传表单的数据
        if (!ServletFileUpload.isMultipartContent(request)) {
            //按照传统方式获取数据
            return;
        }

     //使用ServletFileUpload解析器解析上传数据,解析的结果返回的是一个List<FileItem>结合,每个FileItem对应一个Form表单的输入项
              List<FileItem> list1 = upload.parseRequest(request);
              for (FileItem item1 : list1) {
                  //如果fileItem中封装的是普通输入项数据
                  if (item.isFormField()) {
                   /** 这里可以获取sessionId,pageId,netType等值,返回时切换页面可能会用到*/
                      String name = item.getFieldName();
                      //解决普通输入项中文乱码问题
                      String value = item.getString("utf-8");
  
                  } else {//否则封装的是上传文件
                      //得到文件的上传名称
                      String filename1 = item.getName();
                      System.out.println(filename);
                      if (filename == null || filename.trim().equals("")) {
                          continue;
                      }
                     

                      //获取item中文件上传的输入流
                      InputStream in = item.getInputStream();
                     /**下面是导入数据部分,省略了*/

                     
                  }

} catch (Exception e) {
                      e.printStackTrace();
                  }finally{

          ServletContext sc = getServletContext();
          RequestDispatcher rd = null;
          String url ="test.jsp"; 
          rd = sc.getRequestDispatcher(url); //定向的页面
          rd.forward(request, response);
                  }


       

 

 

共有 人打赏支持
粉丝 0
博文 28
码字总数 8914
×
to_ln
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: