转载
本篇将讲述java常用的上传/下载组件 SmartUpload 的详细java的朋友不会陌生,几乎在所有的B/S架构的项目或者产品中都会用到文件的上传/下载。
关于SmartUpload组件可以在本篇下面的附件中下载。(已经解决上传/下载中文文件名的乱码问题,本人的开发环境均为UTF-8环境)
(1)文件上传
1 <%@ page contentType="text/html;charset=UTF-8"%><%@ page import="com.soft4j.httpupload4j.SmartUpload"%><%@ page import="com.soft4j.bo.WebFileMgr"%><%
2 String ret = null;
3 SmartUpload su = null;
4 try{
5 su = new SmartUpload();
6 su.initialize(pageContext);
7 su.upload();
8 ret = WebFileMgr.upload(su,pageContext);//WebFileMgr.java 处理文件上传
9 if(ret!=null){
10 out.print("successed");
11 }
12 }catch(Exception e){
13 out.print("faild");
14 }finally{
15 su = null;
16 }
17 %>
WebFileMgr.upload(su,pageContext)方法内容:
18 /**
19 * 上传方法.
20 * @param su
21 * @param pageContext
22 * @return
23 * @throws Exception
24 */
25 public static String upload(SmartUpload su,PageContext pageContext) throws Exception {
26 com.soft4j.httpupload4j.File suFile = null;
27 int fileCount = 0;
28 int maxFileSize = 900;//单个文件最大为900K
29 String AllowedExtensions=",jpg,jpeg,gif,png,";//允许上传的文件类型
30 try {
31
32 for (int i=0; i<su.getFiles().getCount();i++) {
33 suFile = su.getFiles().getFile(i);
34 if (suFile.isMissing())
35 continue;
36 fileSize = suFile.getSize()/1024;//字节转换成KB
37 if(fileSize==0) fileSize=1;
38
39 if(maxFileSize<fileSize) throw new Exception("单个上传文件的容量不能超过["+maxFileSize+"KB]");
40
41 if (suFile.getFileExt() == null
42 || "".equals(suFile.getFileExt())) {
43 fileExt = ",,";
44 } else {
45 fileExt = "," + suFile.getFileExt().toLowerCase() + ",";
46 }
47
48 if (!"".equals(AllowedExtensions)
49 && AllowedExtensions.indexOf(fileExt) == -1) {
50 throw new Exception("您上传的文件[" + suFile.getFileName()
51 + "]的类型为系统禁止上传的文件类型,不能上传!");
52 }
53
54 fileCount++;
55 }
56 if (fileCount==0) throw new Exception("请选择上传的文件");
57
58 StringBuffer fullFileName = null;//保存到服务器上的文件名(带路径)
59 for (int i=0; i<su.getFiles().getCount();i++) {
60 suFile = su.getFiles().getFile(i);
61 if (suFile.isMissing()) continue;
62 fullFileName = new StringBuffer("文件的路径");//填写 文件的路径
63 fullFileName.append("文件名");//填写 文件名
64 suFile.saveAs(fullFileName.toString(),SmartUpload.SAVE_PHYSICAL);
65 }
66 return "successed";
67 } finally {
68 //
69 }
70 }
上面的JSP,Java代码就可以实现文件的上传.
(2)文件下载
下载相对更为简单,只要设定下载的文件名(带路径)就可以了.
71 <%@ page contentType="text/html;charset=UTF-8"%>
72 <%@ page import="com.soft4j.httpupload4j.SmartUpload"%>
73 <%
74 //新建一个SmartUpload对象
75 SmartUpload su = new SmartUpload();
76 //初始化
77 su.initialize(pageContext);
78 //设定要下载的文件名(带路径)
79 String fileName="下载的文件名";//文件名(带路径)
80 try{
81 su.downloadFile(fileName);//下载文件
82 }catch(Exception e){
83 e.printStackTrace();
84 out.println(e.toString());
85 }
86 response.getOutputStream().close();
87 %>
附录:
(1). 解决中文问题的修改说明.参见[zip压缩包中的SmartUpload.java]
(2). smartupload.zip
http://dl.javaeye.com/topics/download/b3f67e80-1177-31e5-b9af-9f3bce293e70