• javaweb文件下载 部署到服务器文件下载有问题


    最近做了一个网站,有关检索的一个系统,里边涉及到了文件的下载和查看(pdf文件),遇到了一些问题,现在和大家分享一下我解决的办法:

    文件下载总的来说有两种方式(我认为的啊,别当真),

    一种是通过超链接的方式:<a href="<%=basePath%>/download/文件名称">下载</a>   这种方式就可以下载根路径下的download下的文件了,

    但是这种下载只能下载 .rar文件,当下载pdf或者图片的时候,他就不打开那个文件,所以这种方式一般用于实现查看全文或者预览全文的功能。

    第二种就是使用后台代码的方式了,这种方式首先要请求到后台,我就以ssh框架为例,演示一下:

    首先是页面上的代码,我就用了一个超链接

    <a href="download!downloadFile.action?fileName=要下载的文件名">下载</a>

    之后是后台代码

    public String downloadFile() {

    String fileName = ServletActionContext.getRequest().getParameter("fileName");  //获取前台传过来的文件名
    HttpServletRequest request = ServletActionContext.getRequest(); //获取request对象
    HttpServletResponse response=ServletActionContext.getResponse(); //获取response对象
    response.setHeader("Content-Disposition", "attachment;filename="+fileName);  //
    String fullFileName=request.getSession().getServletContext().getRealPath("") +"\download\"+fileName;

    try{
    InputStream in = new FileInputStream(fullFileName);
    OutputStream out = response.getOutputStream();

    //写文件
    int b;
    while((b=in.read())!= -1)
    {
    out.write(b);
    }

    in.close();
    out.close();
    }
    catch(Exception e){

    }

    return "rdate";  //
    }
    这样就可以实现文件的下载了(可以下载根路径下的download下的文件了),在Windows里完全没问题(我亲自试过的)

    ------------------------------------------------------------------------------------------------------------------------------------------------

    之后我就开开心心的把这个项目部署到服务器上去了测试了(Linux系统),那么问题来了,在服务器上的项目居然不能下载,郁闷了,之后开始寻找解决办法,

    最后发现问题了,原来Linux系统的目录是xxx/xxx/xxx的格式 而Windows下是xxxxxxxxx的格式,所以要部署到Linux系统下这个程序还得修改一下,把

    String fullFileName=request.getSession().getServletContext().getRealPath("") +"\download\"+fileName;这句话的 \ 换成/ 就可以了

    String fullFileName=request.getSession().getServletContext().getRealPath("") +"/download/"+fileName;

    好了,完成了,有什么不对的地方欢迎大家指出来,大家一起学习

    也可加本人qq:212966054

  • 相关阅读:
    移动桌面文件
    软件项目经理素质能力的必备要求
    如何管理时间
    《明日歌》
    浏览网页出现iexplore.exe应用程序错误为:"0x03e620b0"指令引用的"0x00000000"内存.该内存不能为"read"?
    css网站布局学习笔记
    因为爱,人生除了理智,还有情感!
    35岁之前成功的12条黄金法则
    VS2005中没有DataGrid控件的解决方案
    先装VS2005再装IIS,出现访问IIS元数据库失败解决方案
  • 原文地址:https://www.cnblogs.com/gaizhongfeng/p/4318749.html
Copyright © 2020-2023  润新知