zoukankan      html  css  js  c++  java
  • 文件--下载

    其实不用struts也可以实现下载,可以直接用一个链接,href里面写文件的目录。如:

    1 <a href="download/123.rar">123.rar</a>

    这种方法简单,不过它只能下载压缩文件,而其他一些文件如文本文件、图片等都会直接在页面上面显示出来而不会下载到客户端,所以此方法不可取。

     下面介绍另一种方法,也就是用struts实现文件的下载。首先,在WebRoot目录下面建一个文件夹images,可以将文件上传到这个目录下面。下载文件也从该目录下面下载。

    public String fileLoad() throws IOException{
            String fileName = ServletActionContext.getRequest().getParameter("fileName");
            //要处理中文乱码问题
            fileName = new String(fileName.getBytes("iso8859-1"),"utf-8");
            //要下载的哪个文件
            String path = ServletActionContext.getServletContext().getRealPath("/images");//得到项目的根目录
            InputStream is = new FileInputStream(path+"/"+fileName);
            
            //下载到哪里?客户端
            HttpServletResponse response = ServletActionContext.getResponse();
            OutputStream os = response.getOutputStream();
            //弹出下载的框filename:提示用户下载的文件名
            response.addHeader("content-disposition", "attachment;filename="+java.net.URLEncoder.encode(fileName,"utf-8"));
            
            byte[] b = new byte[1024];
            int size = is.read(b);
            while(size>0){
                os.write(b,0,size);
                size = is.read(b);
            }
            is.close();
            os.close();
            return null;
        }

    index.jsp的内容如下:

    <a href="GoodsAction_fileLoad.do?fileName=${image }"><span>名称</span></a>

     文件下载分为两步:读文件、写文件。从服务器读取,然后写到客户端去,所以需要InputStream和OutputStream。然后设置content-disposition弹出下载提示框,提示用户下载的文件名和从何处下载的。

  • 相关阅读:
    苹果mac shell 终端 命令行快捷键——行首行尾
    mac 编译ffmpeg真简单!
    (2)小彩灯接收数据解析
    JSON数据解析(自写)
    ESP-手机--双向通信模式
    史上最全脉搏心率传感器PulseSensor资料(电路图+中文说明书+最全源代码)
    OpenSCAD 大白
    用OpenSCAD設計特製的遊戲骰子
    如何使用openscad绘制一个简单的键帽.
    OpenSCAD(1)基础教程
  • 原文地址:https://www.cnblogs.com/Crysta1/p/6179595.html
Copyright © 2011-2022 走看看