Java Web实现使用浏览器从服务器下载文件(后台)
2023-09-27 14:21:43 时间
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
相关文章
- 一图详解java-class类文件原理
- Apache Druid 安装的时候进行 Java 版本校验没有输出
- Java Unit 测试中如何获得 resources 中的文件
- Node.js对于Java开发者而言是什么?
- java数组三种初始化方式
- Java 复制大文件方式(nio2 FileChannel 拷贝文件能力测试)
- 【Java 异常 & 解决方法 · JPA & lombok】java.lang.StackOverflowError 多对多 (manyToMany) 造成死循环
- 学java需要C语言基础知识,搞懂这些直接来阿里入职
- Java 8 中所有的包列表及介绍
- Java Serializable
- 测试分页查询出数据并分文件导出[java工程]
- 使用Java中的动态代理实现数据库连接池
- Java Servlet 技术简介
- Java 对象和类
- Github优秀java项目集合(中文版) - 涉及java所有的知识体系
- Java开发需要知道的HTML知识
- Java 基础 (IO 对象流,随机存储文件流)
- HTTP文件下载JAVA后台的实现
- Java读取批量Excel文件,并转化为List<Map<String,String>>
- 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore
- Java Selenium(Chrome)载取滚动条网页长图的方法及示例代码
- Java 复制文件的高效方法
- Java中删除文件、删除目录及目录下所有文件(转)
- 【多数元素(169-java)】
- Java语言实现简单FTP软件------>FTP软件效果图预览之上传功能(三)