文档章节

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
浦东
程序员
C# 自定义FileUpload控件

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

annehan
2016/05/27
0
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

没有更多内容

加载失败,请刷新页面

加载更多

Android JNI 开发系列(九)JNI调用Java的静态方法&实例方法

JNI调用Java的静态方法&实例方法 package org.professor.jni.bean;import android.util.Log;/** * Created by peng on 2018/10/11. */ public class Person { /*C/CPP 调用......

蔡小鹏
20分钟前
3
0
Flink 原理与实现:Window 机制

Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从 Streaming 到 Batch 的一个桥梁。Flink 提供了非常完...

xtof
22分钟前
1
0
Fabric.js高级点的教程2--添加表格的方法

有时候我们先在画布上画一个表格类似一下设计软件那种。一方面作为参考线,一方面给人一直专业的赶脚。。。 先贴上一段网上(不是我写的)可以运行的代码 https://codepen.io/rodan8888/pen/e...

xmqywx
22分钟前
1
0
Java中Lambda表达式的使用

Java中Lambda表达式的使用 简介 (译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人...

DemonsI
25分钟前
2
0
深入理解Java中停止线程

一.停止线程会带来什么? 对于单线程中,停止单线程就是直接使用关键字return或者break,但是在停止多线程时是让线程在完成任务前去开启另外一条线程,必须放弃当前任务,而这个过程是不可预...

Ala6
35分钟前
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部