WebWork文件下載
首先在一個ACTION中,如果判斷有權(quán)限進行文件下載。
1、讀出該下載文件,并生成一個流。這是WebWork文件下載的***步,文件名應(yīng)當(dāng)從請求的request中讀出,或從用戶的表中取出。
- public String downLoadFile(String fileName)
- {
- try {
- File input = new File("e:/engilish
- literature.doc");
- docStream = new FileInputStream(input);
- contentDisposition = "filename=\"test.txt\"";
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return "download";
- }
2、將輸出導(dǎo)向到一個特殊的RESULT中去。在WebWork文件下載中叫做Steam Result。
- <action name="register" class=
- "com.job2easy.web.user.RegisterAction">
name="success" type="dispatcher"> - name="location">/home
- /register-result.jsp
name="input"> - name="location">/home/register.jsp
name="download" type="stream"> - name="contentType">application
- /x-msdownload
- name="inputName">docStream
- name="bufferSize">1024
- name="contentDisposition">$
- {contentDisposition}
name="params"/> - < SPAN>action>
3、WebWork文件下載參數(shù)。這中間有幾個參數(shù)需要配置:
◆contentType設(shè)成 application/x-msdownload 就可以。這樣瀏覽器會保證彈出一個下載文件的對話框。
◆inputName 這個比較重要,這個名字是輸入流的名稱, 以后要steam result的實現(xiàn)類中為根據(jù)OGNL的表達式去查找的。
◆contentDisposition 這個是下載之后,保存在用戶端的文件名稱。
◆${contentDisposition} 看一下代碼。如果寫成上述的方式,就有機會在ACTION中設(shè)置文件名。
4、另外一個參數(shù):contentLength就是下載文件的大小,webwork的stream result似乎實現(xiàn)有問題,不能根據(jù)文件的大小動態(tài)進行設(shè)置,只能寫死。
這個參數(shù)的意義是告訴瀏覽下載的文件有多大,以便瀏覽器正確的顯示進度條。如果這個功能很重要的話,可以重新寫一個RESULT來實現(xiàn)。
【編輯推薦】