Java-文件下载操作

  • Controller模块
  • Service模块
  • 运行结果

文件下载都是使用io流进行操作
都是平常业务需求可能会用到的,也没什么复杂逻辑。copy走就能用。
已经把import 带上了,废话不多说,上代码。

Controller模块

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;@RestController
@Api(tags = "文件相关controller")
@RequestMapping("/file")
public class FileUploadController {@ResourceFileService fileService;@ApiOperation("文件下载")@PostMapping("/upload")public void download(HttpServletResponse httpServletResponse) {fileService.fileDownLoad(httpServletResponse);}
}

Service模块


import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;@Slf4j
@Service
public class FileService {public void fileDownLoad(HttpServletResponse response) {String path = "E:\\zzj\\xrk\\user_doc.zip";// 判断文件是否存在File file = new File(path);if (!file.exists()) {log.info("文件目录:" + path + "不存在");}String fileName = file.getName();try {fileName = URLEncoder.encode(fileName, "UTF-8");} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}response.setHeader("content-type", "application/octet-stream");response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment;filename=" + fileName);byte[] buff = new byte[1024];FileInputStream fileInputStream = null;BufferedInputStream bufferedInputStream = null;OutputStream outputStream = null;try {outputStream = response.getOutputStream();fileInputStream = new FileInputStream(file);bufferedInputStream = new BufferedInputStream(fileInputStream);int i = bufferedInputStream.read(buff);while (i != -1) {outputStream.write(buff, 0, buff.length);outputStream.flush();i = bufferedInputStream.read(buff);}} catch (IOException e) {e.printStackTrace();} finally {if (bufferedInputStream != null) {try {bufferedInputStream.close();} catch (IOException e) {e.printStackTrace();}}if (fileInputStream != null) {try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}}}}
}

运行结果


打完收工~

【Java-文件下载】相关推荐

  1. 关于java文件下载文件名乱码问题解决方案

    关于java文件下载文件名乱码问题解决方案 参考文章: (1)关于java文件下载文件名乱码问题解决方案 (2)https://www.cnblogs.com/zhaoyan001/p/9012750 ...

  2. java文件下载出现文件名乱码解决办法

    java文件下载出现文件名乱码解决办法 //IE.chrom.Firefox文件中文乱码问题public String processFileName(HttpServletRequest reque ...

  3. java 文件名乱码_详解关于java文件下载文件名乱码问题解决方案

    JAVA文件下载时乱码有两种情况: 1,下载时中文文件名乱码 2,下载时因为路径中包含中文文件名乱码,提示找不到文件 解决方法见下面部分代码 response.setContentType(" ...

  4. JAVA下载文件的几_详解Java文件下载的几种实现方式

    Java文件下载的几种方式,具体如下: public HttpServletResponse download(String path, HttpServletResponse response) { ...

  5. java文件下载功能代码(单文件下载、多文件批量打包下载)——普遍适用

    一.前言   程序员在做web等项目的时候,往往都需要添加文件上传.下载.删除的功能,有时是单文件,有时多文件批量 操作,而这些功能的代码程序员可以自己收藏起来当成工具使用,这样,程序员在进行程序设计 ...

  6. Java 文件下载 csv文件导出特殊字符转义

    需求描述 将从数据库查出的数据以生成csv文件的方式下载下来(导出). 实现方案 最开始的方法是: 将从数据库中查出的数据拼成符合csv文件格式的字符串,然后将字符串转为输入流,最后返回InputSt ...

  7. Java文件下载相关设置

    每当遇到文件下载时,总是想不起来需要给 Response 设置哪些 Header,这次干脆记录下来,方便以后查询: response.addHeader("Content-Dispositi ...

  8. java 文件下载代码_java文件下载代码实例(单文件下载和多文件打包下载)

    这篇文章主要介绍了java文件下载代码实例(单文件下载和多文件打包下载),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近项目有需要写文件下载相关 ...

  9. java文件下载做apk安装包下载,当下载类型为.apk时,用手机谷歌浏览器下载完后点击打开不能直接启动安装,而是打开压缩文件管理。

    java文件下载做apk安装包下载,当下载类型为.apk时,用手机谷歌浏览器下载完后点击打开不能直接启动安装,而是打开压缩文件管理. uc浏览器可以正常,自带的谷歌不正常,解决方法为,在下载设置res ...

  10. java上传文件限速_【面试题目】Java文件下载(限速、进度条)

    import javax.swing.*; import java.io.FileOutputStream; import java.io.IOException; import java.io.In ...

最新文章

  1. 【撸码师登云梯】google
  2. html中隔行的代码,js+css 控制表格隔行变色与单行高亮的代码
  3. element组件库中table自定义分页效果
  4. 数据结构为什么那么难?
  5. LeetCode 198. 打家劫舍(DP)
  6. java格式_JAVA语言格式
  7. mysql in 子查询优化_mysql in 子查询 容易优化
  8. Ubuntu上可使用的15个桌面环境
  9. LaTex在Linux下编写高质量的文档
  10. Java异常处理-自定义异常
  11. 蓝桥杯竞赛C/C++组不支持C++11特性
  12. Kotlin 或将取代 Java —— 《Java 编程思想》作者 Bruce Eckel
  13. Linux音频驱动-ASOC之Machine
  14. 超漂亮的CSS3按钮制作教程分享
  15. 验证集精度高于训练集精度的原因分析
  16. Django文件上传与下载
  17. STM32定时器周期任务函数编写
  18. mdx和mdd格式的词典解析Android JNI方式实现
  19. 【Vue.JS】纯 Vue.js 制作甘特图
  20. 使用Canvas HTML5画出时钟

热门文章

  1. 谷歌浏览器打开普通用户_Chrome浏览器的用户账户和密码如何导入其他浏览器
  2. 〖产品思维训练白宝书 - 核心竞争力篇⑥〗- 产品经理核心竞争力解读之执行力
  3. 明翰全日制英国硕士留学攻略V2.7(持续更新)
  4. 动态爱心代码(pathon html)
  5. java 反射 getter,java – 通过反射调用getter的最佳方式
  6. Item 13: Prefer const_iterators to iterators.
  7. SpringBoot导出数据到Excle中
  8. Apriori 、FP-Growth 和 Eclat 3 种经典的 ARM (关联规则挖掘)算法--自用
  9. amd显卡用黑苹果输出黑屏_黑苹果用杂交法修改framebuffer开启显卡所有输出端口成功...
  10. OAuth 2.0安全案例回顾