文档章节

FileUpload

Curry_M
 Curry_M
发布于 2017/04/07 15:36
字数 322
阅读 5
收藏 1
点赞 0
评论 0
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;
    }

}

 

© 著作权归作者所有

共有 人打赏支持
Curry_M
粉丝 1
博文 38
码字总数 84728
作品 0
浦东
程序员
Java中的文件上传2(Commons FileUpload:commons-fileupload.jar)

相比上一篇使用Servlet原始去实现的文件上传(http://www.cnblogs.com/EasonJim/p/6554669.html),使用组件去实现相对来说功能更多,省去了很多需要配置和处理的地方。 常用的上传组件有如下...

easonjim ⋅ 2017/03/18 ⋅ 0

java excel 的POI导入

Excel导入: 使用apache 的POI进行excel的导入, 1. pom.xml中添加依赖 commons-fileupload commons-fileupload 1.3.2 org.apache.poi poi-oox...

u010398771 ⋅ 04/17 ⋅ 0

JavaWeb22-HTML篇笔记

第22章WEB22-网上商城实战篇 今日任务 Ø 完成后台的功能模块 1.1 网上商城的后台功能的实现:1.1.1 后台的功能的需求: 1.1.1.1 分类管理: 【查询所有分类】 在左侧菜单页面中点击分类管理: 提...

我是小谷粒 ⋅ 06/08 ⋅ 0

绕过图片上传时的文件格式校验,注入木马这种情况,怎样解决

目前有个系统,jsp + struts2 + spring 的项目,三方评测说,上传图片存在木马注入风险。原因是可以绕过图片格式校验,伪装骗过系统。不知道怎么解决。 目前我有个思路不知对不对:对于地址伪...

小小小蚂蚁 ⋅ 06/15 ⋅ 0

JeeSite 4.0.3 发布,企业级快速开发平台

新增 新增:core项目增加单元测试支持类 ApplicationTest.java 新增:代码生成config.xml支持自定义,放同目录下config-custom.xml文件即可覆盖 新增:shiro.allowRequestMethods 参数,可指...

ThinkGem ⋅ 05/30 ⋅ 0

内容储存库 Apache Jackrabbit 2.12.9 发布,Bug 修复

Apache Jackrabbit 2.12.9 已发布,Apache Jackrabbit 2.12.9 是基于并兼容早期稳定的 Jackrabbit 2.x 版本的增量特性版本。Jackrabbit 2.12.x 版本被认为是稳定的,并且可用于生产环境。 Ja...

局长 ⋅ 05/11 ⋅ 0

java 锯齿数组用于权限管理

java中提供锯齿数据,某些时候特别有用,比如用groupid映射userid。在无论涉及到http数据还是json数据保存护着传输。

IamOkay ⋅ 2014/11/05 ⋅ 0

jQuery-File-Upload 使用文档(翻译)

最近要用到多图上传,准备使用这个插件,但是没搜到相关的文档,只有官方的文档,主要是以有道翻译和个人理解为主 可能会有一些问题,但是比看原文是方便一些. 使用文档 插件的基本信息 插件demo ...

employeeee ⋅ 05/14 ⋅ 0

oracle 导入DMP数据 imp 10g

imp 10g Microsoft Windows [版本 5.2.3790] (C) 版权所有 1985-2003 Microsoft Corp. C:Documents and SettingsAdministrator>imp Import: Release 10.2.0.1.0 - Production on 星期二 11月......

harrypotter ⋅ 06/20 ⋅ 0

SSM框架详细整合教程(Spring+SpringMVC+MyBatis)

动机 使用maven已经有一段时间了,但项目是别人搭建好的,因此一直想着自己要学习搭建一下。网上找了些资料后,结合自己实验,花了点时间就搞好,老样子,写在博客上,免得日后忘记。 本文链...

mryao ⋅ 04/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 30分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 32分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 42分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

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

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

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

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

java高级架构牛人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部