文档章节

FileUpload

Curry_M
 Curry_M
发布于 2017/04/07 15:36
字数 322
阅读 5
收藏 1
package com.pingan.common.util;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class FileUploadUtils {

    @SuppressWarnings("unchecked")
	public static List<FileItem> getFileList(HttpServletRequest request) {
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        List<FileItem> items = new ArrayList<FileItem>();
        try {
            items = upload.parseRequest(request);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return items;
    }

    /**
     * 主要用于从影像系统读出字符流写入响应进行下载
     * @param response
     * @param url
     * @param fileName
     * @throws IOException
     */
    public static void readContentFromIM(HttpServletResponse response, String url, String fileName) throws IOException {
        // Post请求的url,与get不同的是不需要带参数 
        URL postUrl = new URL(url);
        // 打开连接 
        HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();
        connection.setRequestMethod("POST");
        connection.setUseCaches(false);
        connection.setInstanceFollowRedirects(true);
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        connection.connect();
        /* String excel2010 = "D:\\test.png";
         FileInputStream inputStream = new FileInputStream(new File(excel2010));
         BufferedInputStream reader = new BufferedInputStream(inputStream);*/
        BufferedInputStream reader = new BufferedInputStream(connection.getInputStream());

        // 设置输出的格式
        response.reset();
        response.setContentType("application/octet-stream");//application/x-msdownload
        response.addHeader("Content-Disposition",
                "attachment; filename=\"" + java.net.URLEncoder.encode(fileName, "UTF-8") + "\"");
        // 循环取出流中的数据
        byte[] b = new byte[100];
        int len;
        try {
            while ((len = reader.read(b)) > 0) {
                response.getOutputStream().write(b, 0, len);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 主要用于读nas上的模板
     * @param filePath
     * @param fileName
     * @return
     * @throws IOException
     */
    public static byte[] readContentFromNas(String fileName) throws IOException {
        InputStream inStream = new FileInputStream(fileName);// 文件的存放路径
        BufferedInputStream reader = new BufferedInputStream(inStream);
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
        byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据 
        int rc = 0;
        while ((rc = reader.read(buff, 0, 100)) > 0) {
            swapStream.write(buff, 0, rc);
        }
        reader.close();
        byte[] data = swapStream.toByteArray(); //in_b为转换之后的结果 
        swapStream.close();
        return data;
    }

}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: HttpClient工具类
下一篇: FastJson工具类
Curry_M
粉丝 1
博文 85
码字总数 83163
作品 0
浦东
程序员
私信 提问
Apache Commons-FileUpload 1.3 发布

Apache 的文件上传组件 commons-fileupload 今天发布了 1.3 版本,该版本修复了一个重要的安全问题: SECURITY - CVE-2013-0248, see http://seclists.org/fulldisclosure/2013/Mar/76 其他改...

oschina
2013/03/28
3.6K
4
如何在设置singleFileUploads为false时每个文件后面都显示取消按钮

最新版jQuery File Upload组件,设置singleFileUploads为false, 发现只在第一个文件后面显示取消按钮,点击后全部文件都被移除。 如何在每个文件后面都显示一个取消按钮,点击时只移除该行记...

zhonghuafy
2015/01/29
1K
0
Apache Commons FileUpload 1.3.3 发布

Apache Commons FileUpload 1.3.3 已发布。 Apache Commons FileUpload 库解析符合 RFC 1867 (HTML 中基于表单的文件上传)的 HTTP 请求。也就是说,如果使用 POST 方法提交了 HTTP 请求,并...

王练
2017/06/15
1K
2
几种上传文件组件的性能比较

近两天来由于项目需要使用上传组件,于是我仔细分析了Cos和FileUpload的源代码,并对它们的性能进行了测试比较,使用2M、20M、45M、200M的上传大小测试三种组件所花费的时间(单位为ms)结果...

oschina
2008/09/09
13.8K
15
C# 自定义FileUpload控件

摘要:ASP.NET自带的FileUpload控件会随着浏览器的不同,显示的样式也会发生改变,很不美观,为了提高用户体验度,所以我们会去自定义FileUpload控件 实现思路:用两个Button和TextBox控件来...

annehan
2016/05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部