轉載
本篇將講述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