文档章节

文件上传

to_ln
 to_ln
发布于 2017/09/07 11:34
字数 498
阅读 12
收藏 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
博文 69
码字总数 15307
作品 0
东城
私信 提问

暂无文章

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
32分钟前
1
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
50分钟前
13
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
51分钟前
1
0
Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
今天
2
0
java框架学习日志-2

上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又是什么? 控制其实就是控制对象的创建。 反转与正转对应,正转...

白话
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部