使用FormFile处理文件上传下载

使用FormFile处理文件上传下载

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 ;
    }

你可能感兴趣的:(使用FormFile处理文件上传下载)