本地下载文件后缀正常,服务器下载文件后缀都为.txt的解决方法:

后缀为 未知文件.txt 的原因为前端无权限获取Content-Disposition中的文件名

response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
//将文件名设置到 Content-Disposition
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8"));
// 这一行一定要加 意为允许前端获取Content-Disposition的文件名
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");

下载远程文件代码:

        <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>

需引入commons-io使用IOUtils

此处文件路径例如:http://127.0.0.1:8085/upload/1_1612234092195.jpg

    /**
* 流下载
* @param request HttpServletRequest
* @param response HttpServletResponse
* @param filePath 文件路径
*/
public void downloadFile(HttpServletRequest request, HttpServletResponse response, String filePath) {
OutputStream os = null; //输出流
try {
os = response.getOutputStream(); //获取文件名
String fileName = downloadFileDTO.getFilePath().substring(filePath.lastIndexOf("/")+1); response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream"); //将文件名设置到 Content-Disposition
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8")); //允许前端获取Content-Disposition中的文件名
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); URL url = new URL (filePath);
URLConnection uc = url.openConnection();
IOUtils.copy(uc.getInputStream(), os);
os.flush(); }catch (Exception e){
log.error("下载文件失败:{}",e.getMessage());
}finally {
try {
if(os !=null){
os.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}

关于下载远程文件为未知文件.txt的解决方法的更多相关文章

  1. 织梦dedecms 无法下载远程图片 fsockopen函数被禁用的解决方法

    在linux服务器上fsockopen()函数被无情的禁用了(这其实是出于安全考虑,可以理解),下载远程图片的功能就没有办法使用了.找了一些资料之后,找到了解决方法,就是用stream_socket_ ...

  2. 用c#读取文件内容中文是乱码的解决方法:

    用c#读取文件内容中文是乱码的解决方法: //方法1: StreamReader din = new StreamReader(@"C:\1.txt", System.Text.E ...

  3. win7 创建vhd提示“找不到指定文件的虚拟磁盘支持提供程序”解决方法

    本文参照:https://itbbs.pconline.com.cn/diy/16509116_2.html 14楼中"坚持不放弃"用户的答案得到解决 问题复现: 1.window ...

  4. 关于真机调试DDMS中的data文件夹打不开的解决方法

    关于真机调试DDMS中的data文件夹打不开的解决方法 今天在开发的时候需要导出程序中的数据库文件查看数据,数据库文件默认就在/data/data/应用包名/databases/数据库名 这个路径下, ...

  5. jQuery之JSP加载JS文件不起作用的有效解决方法

    JSP加载JS文件不起作用的有效解决方法 作者: 字体:[增加 减小] 类型:转载 时间:2014-04-08 jsp导入jquery文件,老是不起作用,原因在于其不能访问/WEB-INF/目录下的文 ...

  6. VMware虚拟机提示“锁定文件失败 打不开磁盘”解决方法

    VMware虚拟机提示“锁定文件失败 打不开磁盘”解决方法 摘自: http://www.xitongcheng.com/jiaocheng/xtazjc_article_40299.html 发布时 ...

  7. 批处理:Windows主机通过FTP下载远程Linux主机上文件

    问题:在Windows上怎么写个批处理把多个文件FTP依次下载到本地某个目录. 批处理脚本示例: @echo off title Download db files. Don't close it!! ...

  8. "xxxx".zip:这个压缩文件格式未知或者数据已经被损坏,打不开压缩文件,总出现这个提示的解决方法

    从网上下载了一些压缩文件,有时解压时会出现“这个压缩文件格式未知或者数据已经被损坏”或“未找到压缩文件”的提示. 造成的原因有两种: 一.网站上的压缩文件本来就是坏的. 1.你可以尝试可以使用WINR ...

  9. .NET下载文件报错System.UnauthorizedAccessException的解决方法

    假设VS代码对应路径为E:\Projects\Web1,在VS用“发布Web”的方式发布后的路径为E:\Site\Web1.在IIS新建2个站点,站点A指向E:\Projects\Web1,站点B指向 ...

随机推荐

  1. linux学习之路第三天

    开机,重启和用户登陆注销 关机&重启命令 shutdown shutdown -h now :表示立即关机 shutdown -h 1 :表示一分钟后关机 shutdown -r now :表 ...

  2. 按键控制LED灯-ESP32中断处理

    #include <driver/gpio.h> #include <esp_task_wdt.h> #include <freertos/FreeRTOS.h> ...

  3. Python如何设计面向对象的类(下)

    本文将在上篇文章二维向量Vector2d类的基础上,定义表示多维向量的Vector类. 第1版:兼容Vector2d类 代码如下: from array import array import rep ...

  4. C语言:冒泡排序例子

    //冒泡排序 //14个数字排序:14个数的组合:14*13/2=91次 理论上比较91次 ,实际只有39次进行了变量交换 #include <stdio.h> void bubble_s ...

  5. python sqlite3 类

    import sys import os import sqlite3 ##sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/ ...

  6. Python之手把手教你用JS逆向爬取网易云40万+评论并用stylecloud炫酷词云进行情感分析

    本文借鉴了@平胸小仙女的知乎回复 https://www.zhihu.com/question/36081767 写在前面: 文章有点长,操作有点复杂,需要代码的直接去文末即可.想要学习的需要有点耐心 ...

  7. Appium - adb monkey参数(三)

    monkey 参数 1.常规类参数 A.帮助类参数 monkey -h B.日志级别  $ adb shell monkey -v <event-count> . 2.事件类参数 A .执 ...

  8. PAT乙级:1082 射击比赛 (20分)

    PAT乙级:1082 射击比赛 (20分) 题干 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找 ...

  9. 7.29考试总结(NOIP模拟27)[牛半仙的妹子图·Tree·序列]

    前言 从思路上来讲是比较成功的,从分数上就比较令人失望了. 考场上是想到了前两个题的正解思路,其实最后一个题是半个原题,只可惜是我看不懂题... 这波呀,这波又是 语文素养限制OI水平.. 改题的时候 ...

  10. 基于小熊派Hi3861鸿蒙开发的IoT物联网学习【四】

    一.互斥锁基本概念: 1.互斥锁又称互斥型信号量,是一种特殊的二值性信号量[二值型信号量可以理解为任务与中断间或者两个任务间的标志,该标志非"满"即"空"],用 ...