文档章节

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;
    }

}

 

© 著作权归作者所有

共有 人打赏支持
Curry_M
粉丝 1
博文 88
码字总数 84728
作品 0
浦东
程序员
javaweb开发之处理表单上传文件和文件下载

一、基于表单的上传文件 1. enctype属性 当表单需要上传文件时,需指定表单 enctype 的值为 multipart/form-data。 在 form 元素的语法中,enctype 属性指定将数据发送到服务器时浏览器使用的...

小米米儿小
2013/12/06
0
0
解决weblogic下FileUpload类NoSuchMethodError问题

现象 在weblogic应用服务器下使用commons-fileuplad.jar上传文件的时候,报错: java.lang.NoSuchMethodError:org.apache.commons.fileupload.FileUpload.getItemIterator(Lorg/apache/common......

彭苏云
2014/01/20
0
0
commons-fileupload组件上传图片介绍

基于表单的文件上传 如果在表单中使用表单元素 <input type=“file” />,浏览器在解析表单时,会自动生成一个输入框和一个按钮,输入框可供用户填写本地文件的文件名和路径名,按钮可以让浏...

wumingyue
2012/08/29
0
0
Commons FileUpload

1 概述 Commons FileUpdate包很容易为你的Servlet和web应用程序添加健壮的、高性能的文件上传功能。 FileUpload解析遵循RFC 1876(在HTML中基于表单的文件上传)HTTP请求。即,如果一个HTTP请...

Leech
2015/08/02
0
0
CKFinder根据用户设置权限,不同用户有自己的私有的、独立的文件夹

CKFinder 默认情况下多个用户共用同一个图片目录。所有上传的图片和Flash全部保存在同一个文件夹(默认为 userfiles)内。 现在想实现: 第1个需求:不同用户有自己的私有的、独立的文件夹;...

随智阔
2013/07/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部