文档章节

文件上传

to_ln
 to_ln
发布于 2017/09/07 11:34
字数 498
阅读 11
收藏 0

因框架原因,前段时间写文件导入时,用不了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);
                  }


       

 

 

本文转载自:http://blog.csdn.net/u014316026/article/details/47657859

共有 人打赏支持
to_ln
粉丝 0
博文 67
码字总数 14598
作品 0
东城

暂无文章

angular 解决其他电脑不能访问的问题。

ng serve --host 0.0.0.0 --disable-host-check

miaojiangmin
今天
1
0
优酷视频文件怎么转换格式

  以前在优酷上下载视频都只是在手机上观看,但随着科技的发展,对于视频的要求也逐渐增多,不再只是观看视频那么简单,在精彩的部分还会将其单独分割出来,然后进行视频剪辑,可以做出我们...

萤火的萤火
今天
0
0
数据结构:散列

在一个数据结构中查找key元素,用顺序查找、二分查找都需要经过一系列关键之比较才能查找到结果,平均查找长度与数据量有关,元素越多比较次数就越多。 如果根据元素的关键字就能知道元素的存...

京一
今天
0
0
Apache RocketMQ 正式开源分布式事务消息

近日,Apache RocketMQ 社区正式发布4.3版本。此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社区最为关心的分布式事务消...

阿里云云栖社区
今天
30
0
使用JavaScript和MQTT开发物联网应用

如果说Java和C#哪个是最好的开发语言,无疑会挑起程序员之间的相互怒怼,那如果说JavaScript是动态性最好的语言,相信大家都不会有太大的争议。随着越来越多的硬件平台和开发板开始支持JavaS...

少年不搬砖老大徒伤悲
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部