文档章节

文件上传

to_ln
 to_ln
发布于 2017/09/07 11:34
字数 498
阅读 10
收藏 0
点赞 0
评论 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
博文 40
码字总数 11179
作品 0
东城

暂无相关文章

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 19分钟前 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 42分钟前 ⋅ 0

用户登录信息-钉子效果(基于jquery2.0)

本js效果使用jquery2.0,清晰的分解用户登录信息的(钉子效果),该效果直接用在作者网站(www.phpkhbd.com)上。 里面的难点有:定时器,延时。 大致效果如下: 一开始: 鼠标放上去的时候:...

宁哥实战课堂 ⋅ 43分钟前 ⋅ 0

解决yum安装报错Protected multilib versions

使用yum安装报错Protected multilib versions原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上如下一段命令: --setopt=protected_multilib=false 案例: 比如需...

北岩 ⋅ 54分钟前 ⋅ 0

为什么要学习Typescript???

简单来说 目前的typescript就是未来的javascript 为什么?? 这要从ECMA-262标准的第4版说起 对了 我们说的ES5 其实是ECMAScript3.1这个替代性建议被扶正了而已... 那么 第4版标准是什么? 看看...

hang1989 ⋅ 58分钟前 ⋅ 0

linux安装ipfs

一、下载ipfs # cd /usr/local/ipfs/ # wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz # tar -zxvf go-ipfs_v0.4.15_linux-amd64.tar.gz 二、安装ipfs # ......

八戒八戒八戒 ⋅ 今天 ⋅ 0

jvm程序执行慢诊断手册

生产环境最多的几种事故之一就是程序执行慢,如果是web服务的话,表现就是响应时间长。本文分享,从业多年形成的排查守则。 诊断步骤 系统资源查看 首先是系统资源查看,而且必须是在第一步。...

xpbob ⋅ 今天 ⋅ 0

YII2 advanced 高级版本项目搭建-添加API应用以及多应用

一、YII安裝 安裝yii可以用composer安裝,也可以在yii中文社区下载归档文件安装 composer安装就不介绍了,因为要安装composer,比较麻烦,当然安装了composer是最好的,以后安装yii的插件要用...

botkenni ⋅ 今天 ⋅ 0

在jdk1.8的环境下模拟永久代内存溢出

相信不少小伙伴在看深入理解Java虚拟机的时候,作者给我们举例一个demo来发生PermGen space 1、通过List不断添加String.intern(); 2、通过设置对应的-XX:PermSize与-XX:MaxPermSize(更快看到...

虾几把写 ⋅ 今天 ⋅ 0

开发OpenDaylight组件的完整流程

在前面介绍学习了OpenDaylight的几个重要模块后,这里再来介绍下完整开发一个模块的过程。 OSGI的bundles提供被其他OSGI组件调用的服务。这个教程中展示的是Data Packet Service去解析数据包...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部