文档章节

文件上传

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
东城

暂无文章

Spring MVC 通过@Value注解读取.properties配置内容

第一步: 在applicationContext.xml配置: <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="locations">......

wangyanbao
13分钟前
1
0
Rancher 2.1全面发布,优化Kubernetes集群运维

GitLab支持、CICD优化、项目配额管理、驱散容器功能等等,Rancher 2.1给你带来一大票惊喜新功能!还有备着【千元大奖】的用户体验计划等你来参与! Rancher 2.1已于近日全面发布! Rancher ...

RancherLabs
19分钟前
1
0
如何优雅的给淘客/京东及拼多多的代理(会员)发工资(佣金)

前段时间有一些做淘客和京东推广的朋友问我能不能开发一个代付系统,这样他们可以用来给代理和网站会员发工资,他们现在还是用的人工手动打款,不仅效率慢,而且还容易出错,我一想,嗯,不难...

千龍
24分钟前
1
0
try-catch-finally

try-catch-finally 一.执行顺序 try-catch-finally 包含的代码块,当 try 里面的代码出现异常的时候,会进入 catch 中,finally 代码块则在最后被执行,即 无论是否出现异常,finally 里面的...

tsmyk0715
30分钟前
2
0
【编程架构实战】——Java并发包基石-AQS详解

目录 1 基本实现原理 1.1 如何使用 1.2 设计思想 2 自定义同步器 2.1 同步器代码实现 2.2 同步器代码测试 3 源码分析 3.1 Node结点 3.2 独占式 3.3 共享式 4 总结   Java并发包(JUC)中提...

java知识分子
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部