Servlet+SmartUpload实现
1.上传
//使用smartUpload上传文件
SmartUpload su = new SmartUpload();
su.initialize(getServletConfig(),req,resp);
//a.设置上传文件单个的大小
su.setMaxFileSize(1024*1024*10);
//b.设置上传文件的总大小
su.setTotalMaxFileSize(1024*1024*100);
//c.设置允许上传到文件类型
su.setAllowedFilesList("jpg,txt,gif");
String result = "上传成功";
try {
//d.设置不允许上传的文件类型
su.setDeniedFilesList("mp4,mp3,jsp");
//e.上传文件
su.upload();
int fileCount = su.save(filePath);
System.out.println("成功上传"+fileCount+"个文件!");
} catch (Exception e) {
//异常处理,异常编号是SmartUpload源码中提供的
result = "上传失败!";
if(e.getMessage().indexOf("1015")!=-1){
result = "上传失败:文件类型不允许!";
}else if(e.getMessage().indexOf("1010")!=-1){
result = "上传失败:文件类型不允许!";
}else if(e.getMessage().indexOf("1105")!=-1){
result = "上传失败:文件大小超出限制!";
}else if(e.getMessage().indexOf("1110")!=-1){
result = "上传失败:文件总大小超出限制!";
}
e.printStackTrace();
}
//获取上传文件的信息
for(int i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File tempFile = su.getFiles().getFile(i);
System.out.println("----------------------------");
System.out.println("表单中name的属性值:"+tempFile.getFieldName());
System.out.println("文件名:"+tempFile.getFileName());
System.out.println("文件类型:"+tempFile.getFileExt());
System.out.println("文件全名:"+tempFile.getFilePathName());
System.out.println("上传文件大小:"+tempFile.getSize());
System.out.println("----------------------------");
}
2.下载
(1)单个文件下载:
//单个文件的下载
String fileName = req.getParameter("filename");
SmartUpload su = new SmartUpload();
su.initialize(getServletConfig(),req,resp);
su.setContentDisposition(null);
try {
su.downloadFile("/images/"+fileName);
} catch (SmartUploadException e) {
e.printStackTrace();
}
(2)文件批量下载:(将多个文件打包再下载)
//批量文件下载,将其打包成zip文件
resp.setContentType("application/x-msdownload");
resp.setHeader("Content-Disposition","attachment;filename=downloadfile.zip");
//获取下载文件路径,在根路径下的images文件夹下
String path = req.getServletContext().getRealPath("/")+"images/";
//获取要下载的文件的名称
String[] filenames = req.getParameterValues("filename");
//创建ZipOutputStream的实例
ZipOutputStream zos = new ZipOutputStream(resp.getOutputStream());
String str = "";
String rt = "\r\n";
for(String filename:filenames){
str += filename+rt;
//创建单个文件,并将其添加到Zip文件中
File file = new File(path+filename);
zos.putNextEntry(new ZipEntry(filename));
FileInputStream fis = new FileInputStream(file);
byte b[] = new byte[1024];
int n=0;
while((n=fis.read(b))!=-1){
zos.write(b,0,n);
}
zos.flush();
fis.close();
}
//给压缩文件添加注释
zos.setComment("download success:" + rt +str);
zos.flush();
zos.close();
}