1.首先界面設計,自己搞定 .。。。

2. 然后在jsp頁面中定義文件上傳標簽,name 要和From中定義的FormFile變量名稱一致

3. 在Form中定義FormFile私有變量, 它和文件上傳標簽名稱要一樣。

4. ,這里要先在po類里面定義個字節變量content 接收上傳來的文件內容

5. 在Action的增加方法中,首先判斷頁面上是否有文件被上傳,然后把內容設置到po類里面去 ,這里getFileData()得到的是字節.

6. 文件需要提交下載時,在Action中加入一下代碼
//下載公文附件
public ActionForward download(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
DocumentActionForm daf = (DocumentActionForm)form;
Document document = documentManager.findDocument(daf.getId());
response.reset();
response.setContentType("application/x-download;charset=GBK");
response.setHeader("Content-Disposition", "attachment;filename=temp.doc");
response.getOutputStream().write(document.getContent());
response.getOutputStream().flush();
response.getOutputStream().close();
//指示struts,不要對返回值進行處理
return null;
}
7. 程序運行效果
另外一種方法在Action中添加download方法也是可以達到下載功能的目的
public ActionForward downloadFile(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception{
String docId = request.getParameter("docId");
Doc doc = baseService.find(docId);
SerializableBlob serBlob = null;
if(doc!= null){
serBlob = (SerializableBlob) doc.getContentBinary();
}
Blob blob = serBlob.getWrappedBlob();
try {
if (blob != null) {
response.reset();
BufferedInputStream in = new BufferedInputStream(
blob.getBinaryStream()); // 輸入流
response.setContentType("bin:charset=utf-8");
response.setHeader(
"Content-Disposition",
"attachment; filename=temp.doc"); // 設置保存頁面提示信息
byte[] b = new byte[100];
int len;
while ((len = in.read(b)) > 0) {
response.getOutputStream().write(b, 0, len);
}
in.close();
}
} catch (Exception e) {
return null;
}
return null;
}