smartupload实现文件的上传、下载

package com.yc.util;

import java.io.IOException;

import java.sql.SQLException;

import java.util.Collection;

import java.util.Date;

import java.util.Enumeration;

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.jsp.PageContext;

import com.jspsmart.upload.File;

import com.jspsmart.upload.Files;

import com.jspsmart.upload.Request;

import com.jspsmart.upload.SmartUpload;

import com.jspsmart.upload.SmartUploadException;

public class UploadUtil {

private static final String PATH = "images"; // 保存图片的文件夹

private static final String ALLOWED = "gif,jpg,png,jpeg"; // 可以上传的文件类型

private static final String DENIED = "exe,bat,jsp,html,com"; // 不可以上传的文件类型

private static final int TOTALMAXSIZE = 20 * 1024 * 1024; // 最多上传的大小

private static final int SINGLEFILESIZE = 1024 * 1024; // 最多单个文件在小

/**

* 用于从页面上下文中读取到request请求中传过来的字符串参数及文件参数

*

* @param context

*            :页面上下文

* @return Map 键值 name-> 张三

*/

@SuppressWarnings({ "unchecked", "rawtypes" })

public Map<String,String> upload(PageContext context){

SmartUpload su = new SmartUpload();

// File f=null; //临时变量用来存每个上传的文件, 不是io中的,而是smartupload

// 开始取出页面所有传来的字符参数

Map<String, String> params = new HashMap<String, String>();

// 初始化

try {

su.initialize(context);

// 设置参数

su.setAllowedFilesList(ALLOWED);// 设定允许上传的文件(通过扩展名限制)

su.setDeniedFilesList(DENIED);   //设定禁止上传的文件(通过扩展名限制)

su.setCharset("utf-8");

su.setTotalMaxFileSize(TOTALMAXSIZE); // 限制总上传数据的长度。

su.setMaxFileSize(SINGLEFILESIZE);

su.upload();// 开始接收上传

//int count = su.save("/upload");  // 将上传文件全部保存到指定目录

//下载新建一个

//SmartUpload su = new SmartUpload();

//初始化

//su.initialize(pageContext);

//设定contentDispositio为null以禁止浏览器自动打开文件

//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为doc时,

//浏览器将自动用word打开它。扩展名为pdf时,浏览器将用acrobat打开。

//su.setContentDisposition(null);

// 载文件

//su.downloadFile("/upload/test.doc");

// 从su中取出封装request

Request request = su.getRequest(); // 注意这个reqeust请滶对象是smartupload提供

Enumeration et=request.getParameterNames(); //获取请求中的所有表单元素信息

String str;

while(et.hasMoreElements()){

str=String.valueOf(et.nextElement());

params.put(str,request.getParameter(str));

}

// 取出上传的文件流

if (su.getFiles() != null && su.getFiles().getCount() > 0) {

Files fs = su.getFiles();

Collection<File> col = fs.getCollection();

String fname;

String picPath="";

for (File f : col) {

if (!f.isMissing()) { // 判断文件在上传的过程中是否丢失

// 文件名有可能重复,所以不能用原文件名,必须重生成一个新文件名,

fname = PATH+"/"+new Date().getTime() + ""+ new Random().nextInt(10000)+"."+f.getFileExt(); // 取得原文件的后缀名

System.out.println("文件会保存到:" + fname);

// 保存

f.saveAs(fname, SmartUpload.SAVE_VIRTUAL);

picPath+=fname;

}

}

picPath+=picPath.substring(0,picPath.lastIndexOf(",")); //去掉最后的那个逗号

params.put("picPath",picPath); // 取出最后存的文件名,保存到params

}

} catch (ServletException e) {

LogUtil.log.error(e.toString());

throw new RuntimeException(e);

} catch (IOException e) {

LogUtil.log.error(e.toString());

throw new RuntimeException(e);

} catch (SQLException e) {

LogUtil.log.error(e.toString());

throw new RuntimeException(e);

} catch (SmartUploadException e) {

LogUtil.log.error(e.toString());

throw new RuntimeException(e);

}

return params;

}

/**

* 文件下载

* @param filePath:要下载的文件路径

* @param response:响应

* @param context:文件上下文

*/

public void downLoadFile(String filePath, HttpServletResponse response,PageContext context){

try {

SmartUpload su=new SmartUpload();

su.initialize(context);

//设定contentDisposition为null以禁止浏览器自动打开文件

//保证点击连接后是下载文件。若不设定,则下载的文件扩展名为doc时

//浏览器将自动用word打开。扩展名为pdf时,浏览器将用acrobat打开

su.setContentDisposition(null);

//下载文件

su.downloadFile(filePath);

} catch (SmartUploadException e) {

LogUtil.log.error(e.toString());

throw new RuntimeException(e);

} catch (ServletException e) {

LogUtil.log.error(e.toString());

throw new RuntimeException(e);

} catch (IOException e) {

LogUtil.log.error(e.toString());

throw new RuntimeException(e);

} finally{

try {

response.getOutputStream().close();

} catch (IOException e) {

LogUtil.log.error(e.toString());

throw new RuntimeException(e);

}

}

}

}

时间: 2024-10-23 15:21:22

smartupload实现文件的上传、下载的相关文章

通过scp实现文件的上传下载

一.什么是scp? Scp 是SSH自带的一个内置命令,是安全拷贝的意思,可以实现文件的上传和下载,传输速率快,    安全性高. 二.通过scp实现文件的上传下载 1.  从服务器下载文件到本地 (1)不指定身份下载 例:下载服务器172.25.254.116的/home/student/test/QQ/12.txt到本地/home/kiosk/ 不指定身份下载默认以当前登陆用户下载,如果当前登陆用户对下载文件没有读写权限将不能下载 (2)指定身份下载 例:以root身份下载服务器172.25

文件的上传下载

文件的上传下载包括文件的上传和文件的下载两部分,下面以项目的形式给出,项目的结构如下图所示: 项目的思路如下: 1.启动项目,输入地址:http://localhost:8080/fileUpload/upload/upload.jsp,进入文件上传界面upload.jsp. 2.文件上传的路径是UploadHandleServlet,创建临时保存文件路径(在项目的根目录的web-inf下面):                                   D:\ruanjian\tomc

asp.Net文件的上传下载(2) 转

Asp.net 上传.下载文件 2011-01-08 16:21:48|  分类: .NET |  标签: |举报 |字号大中小 订阅 首先我们要判断用户是否选择了要上传文件,我们可用下面这句实现: if(File1.PostedFile.ContentLength>0)  如果用户有上传的文件,则:   string name = File1.PostedFile.FileName ;//获取输入的文件名字      int i= name.LastIndexOf(".") ;

asp.net文件的上传下载

Web.Config 配置文件 <?xml version="1.0"?> <configuration> <appSettings>    <add key="FileUploadPath" value="Upload/" />    <add key="FileTypeLimit" value=".zip,.rar,.dox,.ppt,.txt,.mp3&qu

JAVAWEB之文件的上传下载

文件上传下载 文件上传: 本篇文章使用的文件上传的例子使用的都是原生技术,servelt+jdbc+fileupload插件,这也是笔者的习惯,当接触到某些从未接触过的东西时,总是喜欢用最原始的东西将他们表达出来.下面是具体的步骤,大家可以跟着我一步一步的用apache的fileupload插件来完成文件的上传下载. 1.创建一个web工程,我们这里取名为fileupload 2.导入相关jar包,,数据源使用的是apache-c3p0数据源,以及上传下载插件包,goson库,以及mysql驱动

HttpClient实现文件的上传下载

1 HTTP HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源. 虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活.HttpClient 用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议. 一般的情况下我们都是使用Chrome或者

Asp.net实现MVC处理文件的上传下载功能实例教程

这篇文章主要介绍了Asp.net实现MVC处理文件的上传下载功能,比较全面而系统的对Asp.net MVC的文件上传下载功能进行了深入分析,有很好的借鉴价值,需要的朋友可以参考下 上传于下载功能是程序设计中非常常见的一个功能,在ASP.NET程序开发中有着非常广泛的应用.本文就以实例形式来实现这一功能. 一.概述 如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUploa

python使用ftplib模块实现FTP文件的上传下载

python已经默认安装了ftplib模块,用其中的FTP类可以实现FTP文件的上传下载 FTP文件上传下载 # coding:utf8 from ftplib import FTP def upload(f, remote_path, local_path): fp = open(local_path, "rb") buf_size = 1024 f.storbinary("STOR {}".format(remote_path), fp, buf_size) f

用struts2实现文件的上传下载

在做B/S系统时经常会有文件上传下载的需求,现就基于struts2框架实现其功能 Struts2框架默认采用Commons-fileupload组件完成文件上传功能.? 使用Struts2框架实现文件上传功能,只需在Action中定义一个java.io.File类型的成员并为之设立setter方法,方法名要和参数名对应.? 客户端上传的文件, Struts2框架会自动将其保存在临时文件中,封装成java.io.File类对象.如果还想得到上传的文件名和文件类型,需按照如下命名规则在Action中