当前位置: 代码迷 >> Java Web开发 >> Struts2 文件下载好后、没有内容~·解决方案
  详细解决方案

Struts2 文件下载好后、没有内容~·解决方案

热度:774   发布时间:2016-04-17 17:19:30.0
Struts2 文件下载好后、没有内容~~~~~~~~~~~~~~·
本来想用Struts2的文件下载的、但是觉得配置麻烦、于是用以前的方式来完成这个功能!
没想到啊、到文件下载完毕过后、打开文件一看没有内容啊!
HTML:
HTML code
<form name="myForm" action="<%=path%>/platform/questionAction!fileDownload.action" method="post" enctype="multipart/form-data">                            <a href="javascript: aClick();" >${Tbq.temp1}</a>                            <input type="hidden" value="${Tbq.fileurl}" name="strurl"/>                        </form>

JS:
JScript code
<%--禁用缓存--%>        $(document).ready(function(){            $.ajaxSetup({cache:false});          });        function aClick(){            document.myForm.submit();          }

Action:
Java code
public String fileDownload(){            try{            //得到下载文件的名字             String url = request.getParameter("strurl");            if(url == null || url.equals("")){                  return null;             }                //创建file对象             File file=new File(ServletActionContext.getServletContext().getRealPath("/")+url);            //设置response的编码方式             response.setContentType("application/x-msdownload");             //写明要下载的文件的大小                    response.setContentLength((int)file.length());                    //发送到客户端的文章             //解决中文乱码             response.setHeader("Content-Disposition","attachment;filename="+new String                     (file.getName().getBytes("gbk"),"iso-8859-1"));            //读出文件到i/o流                  FileInputStream fis=new FileInputStream(file);                BufferedInputStream buff=new BufferedInputStream(fis);              byte [] b=new byte[buff.available()];                OutputStream myout=response.getOutputStream();             response.setContentType("application/octet-stream");                 myout.write(b);             myout.flush();                 myout.close();         }catch(Exception ex){            ex.printStackTrace();             }finally{           }        return null;    }

看图——上传完毕过后、我跑到上传的路径文件中去点开文件查看:

下载完毕后、点击查看:


下面看看文件的大小——原文件:

下载后的文件:

为什么我下载过后的文件内容会是白板呢!
程序没有异常!知道的给指点指点!
感激不尽啊!

------解决方案--------------------
你这文件读写都没写进要下载的文件里啊。。。
------解决方案--------------------
BufferedInputStream buff=new BufferedInputStream(fis);
byte [] b=new byte[buff.available()];
OutputStream myout=response.getOutputStream(); 
response.setContentType("application/octet-stream");
myout.write(b); 
myout.flush();



b是空的吧!
  相关解决方案