一个恶心的坑记录下。

刚开始不知道阿里云可以通过直接设置下载文件名,所以从网上查到链接

  • https://blog.csdn.net/weixin_45861283/article/details/111597661

所以写了一个获取链接然后下载的代码:

@RequestMapping(value = "/downloadAttac", method = RequestMethod.GET, produces = "application/octet-stream")public void download(String url, String fileName, HttpServletRequest request, HttpServletResponse response) {if (!url.startsWith("http")) {url = "http:".concat(url);}fileName = URLUtil.decode(fileName);// 下载本地的文件try {// 把文件从第三方服务器下载到当前服务器本地URL url2 = new URL(url);URLConnection conn = url2.openConnection();InputStream inputStream = conn.getInputStream();response.reset();response.setContentType(conn.getContentType());OutputStream os = response.getOutputStream();BufferedOutputStream bos = new BufferedOutputStream(os);try {BufferedInputStream bis = new BufferedInputStream(inputStream);try {response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition","attachment; filename="+ URLEncoder.encode(fileName, "UTF-8"));byte[] read = new byte[1024];while (bis.read(read) != -1) {bos.write(read);}bos.flush();} catch (Exception e) {e.printStackTrace();} finally {bis.close();inputStream.close();}} catch (Exception e) {e.printStackTrace();} finally {bos.close();os.close();}} catch (Exception e) {e.printStackTrace();}

但是发现下载下来的文件是乱码。看了下代码,才发现是read和write方法写错了,因为是同时从网络上获取,每次不会取满1024字节,所以每次都有些空字节传进去,就会有问题。改成这样就好了:

                    int len = 0;while ((len = bis.read(read)) != -1) {bos.write(read, 0, len);}

后来才发现,阿里云在上传的时候,可以设置下载的名称,就不用这么转折的方法了,添加下面的代码即可

let _self = this;
_self.dataObj['Content-Disposition'] = "attachment;filename=" + file.name;

阿里云改名并下载文件,乱码问题解决相关推荐

  1. 从阿里云OSS上下载文件的总结

    本文再次特别感谢如下文档 阿里云官方文档 博客:https://blog.csdn.net/qq_41942909/article/details/95538687 ----------------- ...

  2. Springboot 阿里云OSS修改下载文件名称

    文章目录 方案探讨 修改oss文件元信息 下载到服务器并包装 前端引入文件预览插件 跨域 方案对比 本文处理的场景比较特殊,上传OSS文件由其他team掌控(无法操作),下载文件由本team所支持的服 ...

  3. 使用阿里云OSS上传文件

    本文介绍如何利用Java API操作阿里云OSS对象存储. 1.控制台操作 首先介绍一下阿里云OSS对象存储的一些基本概念. 1.1 进入对象存储界面 登录阿里云账号,进入对象存储界面,如图所示. 进 ...

  4. thinkPHP 阿里云OSS 上传文件、直接下载

    阿里云OSS 上传文件.直接下载 1. 安装OSS SDK composer require aliyuncs/oss-sdk-php 2. thinkPHP接口 public function up ...

  5. Win10下用SCP命令免密码上传、下载阿里云服务器上的文件

    需求: 需要定时把阿里云服务器上的数据备份文件下载到本地备份,所以需要在本地win10系统上定时执行从阿里云服务器上下载备份文件的操作. 环境和工具 本地win10系统及自带的SCP工具,工具目录:C ...

  6. 微信头像下载并上传到阿里云OSS,PHP文件上传到阿里云OSS简单代码(OSS文件上传,微信头像下载,CURL下载文件,微信头像链接过期)

    (就这么个小事,有多少公司多少项目没做到!!) 微信公众号项目,后端获取到授权用户的微信头像后,要自行下载保存,不下载的话,微信返回的头像链接会在一段时间后过期,无法访问! 下面是我写的两个简单实用方 ...

  7. python程序发布到阿里云云服务器_Python实现阿里云服务器里的文件上传与下载

    Python实现阿里云服务器里的文件上传与下载 018.4.15 背景: 老实说,因为现实的各种原因造成电脑换来换去是可能出现的事情,但是电脑能换,电脑里的环境却不能换.我就曾在三个电脑里各自安装了虚 ...

  8. modelsim 各版本 网盘_阿里云盘官方下载-阿里云盘最新版本 v1.0.1

    阿里云盘app下载分享,阿里云盘是一款非常实用的手机云存储服务软件,原名为"阿里云网盘",存储空间大,操作速度快,非常便捷好用,欢迎下载使用~ [软件简介] 阿里云网盘是阿里云团队 ...

  9. 部署阿里云盘的目录文件列表程序教程

    现在拥有阿里云盘账号的伙伴应该很多了,大部分都有1T的存储容量,小部分有6T,重要的是上传下载的速度很快,相对于其他的网盘,要么是传输速度慢,要么是存储容量太低,所以阿里云盘算是目前最好的免费网盘了, ...

最新文章

  1. [BZOJ1503]郁闷的出纳员(Splay)
  2. 如果MySQL的自增 ID 用完了,怎么办?
  3. python百度网盘-bypy-百度网盘Python客户端 linux
  4. DHTML【2】--HTML
  5. 车载安卓导航一键root_听说比Carplay牛 率先体验华为HiCar车载互联
  6. 用js控制video的src_百度知道
  7. vue 自定义 移动端筛选条件
  8. 前端vscode插件合集
  9. (JAVA)Math类
  10. php去掉字符串末尾数字,PHP-RegEx:删除字符串末尾的数字,并删除特定字符串后的文本...
  11. 重磅福利!《Apache Flink 十大技术难点实战》发布,帮你从容应对生产环境中的技术难题...
  12. 【蓝桥杯单片机】超声波模块(测距原理,驱动方式)
  13. 怎么设置计算机管理员权限,Windows7管理员权限怎么设置?
  14. 如何快速去掉word页眉横线
  15. 深入探析CAN收发器各项参数
  16. ffmpeg命令行视频剪辑与拼接
  17. docker个人容器云(基于阿里云)
  18. Java实现发送邮件(定时自动发送邮件)
  19. 我的涨分日记(二)——BestCoder Round #59
  20. 会计用计算机很快是,中级会计考试用的计算器是什么样的?

热门文章

  1. JINI学习笔记2-HelloWorld
  2. c语言---c语言中的斐波那契数列程序
  3. WWDC2019:离开手机,苹果靠什么“挽尊”
  4. python写等腰三角形的性质_杨辉三角—知识点详解 - osc_8cfq8uoa的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. 外网访问群晖NAS VMM搭建Openwrt的admin界面
  6. 最新京东短信登录+傻妞机器人保姆级部署教程(2022/9/8)
  7. 白皮书是什么?如何写产品白皮书?
  8. Android品牌手机,手机坑合集,手机厂商
  9. 机器学习模型中的损失函数loss function
  10. Java汉字转拼音工具类(支持首字母和全拼)