码迷,mamicode.com
首页 > Web开发 > 详细

smartupload实现文件的上传、下载

时间:2015-05-12 23:07:50      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:jsp文件上传下载   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);
}  
}   
}
}

smartupload实现文件的上传、下载

标签:jsp文件上传下载   smartupload   

原文地址:http://blog.csdn.net/qfxsxhfy/article/details/45674505

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!