Java Web实现使用浏览器从服务器下载文件(后台)

Java Web实现 使用浏览器从服务器下载文件。
下面实现两种情况的下载,需求如下:

需求(一):
1、用户在页面填写表单。
2、填写完成后,选择下载,将表单内容发往后台。
3、后台根据内容生产一个文件,发送给前端。
4、前端成功下载文件到本地。
此需求简单来说就是,用户在页面上填写内容,然后将内容转变成文件的形式。

后台设计思路:
1、首先拿到前端发送过来的内容。
2、将内容解析,存放至缓冲区。
3、设置响应头。
4、将缓冲区里的内容,以流的方式写出。

代码实现:

public void download(HttpServletResponse response){
        JSONObject json = new JSONObject();
        /* 假设这是前端使用JSON放过来的数据 */
        json.put("A","1");
        json.put("B","2");
        json.put("C","3");
        /* 遍历JSON,将JSON的值放至缓冲区 */
        StringBuilder sb = new StringBuilder();
        Iterator it = json.keys();
        while(it.hasNext()){
            String key =  (String)it.next();
            String value = (String)json.get(key);
            sb.append(key).append("=").append(value).append("\n");
        }
        /*  设置文件ContentType类型,这样设置,会自动判断下载文件类型   */
        response.setContentType("application/multipart/form-data");
        /* 设置文件头:最后一个参数是设置下载文件名(假如我们叫a.ini)   */
        response.setHeader("Content-Disposition", "attachment;filename=a.ini");
        try{
            /* 用流将数据写给前端 */
            OutputStream os = response.getOutputStream();
            os.write(sb.toString().getBytes());
            os.flush();
            os.close();
        }catch (IOException ioe){
            ioe.printStackTrace();
        }
    }

需求(二):
1、用户指定下载什么文件。
2、成功下载文件到本地。

后台设计思路:
1、首先获取前端需要下载什么文件。
2、找到文件在服务器上面的路径。
3、将文件读进内存
4、将文件以流的方式写出。

代码实现:

 public void download() throws  IOException{
        //获取服务器文件
        File file = new File("/home/a.txt");

        InputStream ins = new FileInputStream(file);
        /* 设置文件ContentType类型,这样设置,会自动判断下载文件类型 */
        response.setContentType("multipart/form-data");
        /* 设置文件头:最后一个参数是设置下载文件名 */
        response.setHeader("Content-Disposition", "attachment;filename="+file.getName());
        try{
            OutputStream os = response.getOutputStream();
            byte[] b = new byte[1024];
            int len;
            while((len = ins.read(b)) > 0){
                os.write(b,0,len);
            }
            os.flush();
            os.close();
            ins.close();
        }catch (IOException ioe){
           ioe.printStackTrace();
        }
    }

链接:https://blog.csdn.net/qq_28082757/article/details/72771166

原文地址:https://www.cnblogs.com/isme-zjh/p/11506430.html

时间: 2024-08-16 17:45:00

Java Web实现使用浏览器从服务器下载文件(后台)的相关文章

Java web中不同浏览器间导出Excel文件名称乱码问题解决方案

问题描述: 对于不同浏览器存在对中文编码格式问题,从而在导出Excel文件时,中文文件名出现乱码的情况,即在程序中给要导出的文件指定一个中文名字时,在浏览器上出现的下载框中的文件名出现了乱码,解决如下: 解决方案: [java] view plain copy Date dt=new Date();//如果不需要格式,可直接用dt,dt就是当前系统时间 DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//设置显示格

wp8通过WebClient从服务器下载文件

通过WebClient从Web服务器下载文件,并保存到wp8手机应用程序的独立存储. 我们可以通过利用webClient_DownloadStringCompleted来获得下载完成所需要的时间,用Stopwatch得到下载的总时间. 通常我们都将上传.下载作为异步事件来处理,以便不阻止主线程. String url = "http://172.18.144.248:8080/upload/" + filename; WebClient client = new WebClient()

本地上传文件到服务器,从服务器下载文件到本地

最近在做项目的时候涉及到了文件的上传.下载,以前学习IO时也没有搞得多清楚,在网上找了些上传下载的例子,然后修改了部分.经测试,上传下载文件暂时能用,下面是上传和下载的方法: 1.本地上传文件到服务器 html代码: <form id="uploadDatumInfo" name="uploadDatumInfo" method="post" enctype="multipart/form-data" target=&q

putty windows上传文件到linux服务器 &amp; 从linux服务器 下载文件到 windows

从putty官网下载putty软件:putty.exepscp.exepsftp.exe等软件 也可以自己下windows安装包putty-0.63-installer.exe 本人直接下载putty-0.63-installer.exe安装包了,然后直接安装 使用pscp方式从windows上传文件到linux服务器 在CMD命令行中进入到putty安装目录 输入pscp 回车 pscp 跟我们平时使用的linux scp命令操作的都是类似的 现在我直接从windows本地上传一个文件到lin

C# 实现访问FTP服务器下载文件,获取文件夹信息小记

最近因为要开发广告制作工具,自动生成广告流,需要获取第三方服务器上的文件资源,经过摸索,从这次经历中记录下. FtpWebRequest reqFtp; WebResponse response = null; //获取文件夹信息 reqFtp = (FtpWebRequest)WebRequest.Create(this.ftp);//ftp://IP:port/文件夹名1/文件夹名2/.../文件夹名 reqFtp.UseBinary = true; reqFtp.KeepAlive = f

服务器下载文件http

#region 从服务器下载文件 /// <summary> /// 从服务器下载文件 /// </summary> /// <param name="_Request"></param> /// <param name="_Response"></param> /// <param name="_fileName">文件名称</param> ///

scp从服务器下载文件或上传文件到服务器

1.从服务器下载文件: scp [email protected]:/xxx/xxx.xxx e:/test/ 2.从本地上传文件到服务器 scp e:/test/test.log [email protected]:/text 理解: scp 操作的文件地址    要上传的文件地址 从服务器下载文件就好比从服务器上传文件到本地服务器 原文地址:https://www.cnblogs.com/itwlp/p/10859476.html

从Linux服务器下载文件夹到本地

从Linux服务器下载文件夹到本地1.使用scp命令 scp /home/work/source.txt [email protected]:/home/work/   #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下 scp [email protected]:/home/work/source.txt /home/work/   #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下 scp [em

java web 学习二(Tomcat服务器学习和使用1)

一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改 例如:将Tomcat服务器的启动端口由默认的8080改成8081端口 Tomcat服务器启动端口默认配置 1 <Connector port="8080" protocol="HTTP/1.1" 2 connect