老丘
老丘
  • 发布:2019-06-18 08:26
  • 更新:2019-09-18 18:09
  • 阅读:4716

uni.downloadFile(OBJECT)接口如何下载Java后台输出返回的二进制文件

分类:uni-app

想用uni.downloadFile(OBJECT)接口下载App的安装包和升级包,但是不知道如何下载Java后台返回的二进制文件。
假设要下载的文件是一张图片,参数中的url如果可以直接在浏览器中打开显示成图片,则能成功获取并下载,
但是后台如果输出的是IO流,不知道怎么去下载这个IO流文件呢?
uni.downloadFile不是直接发起一个 HTTP GET 请求吗?为什么没进入到Java后台的controller里对应路径的方法中?
移动端代码:
uni.downloadFile({
url: 'http://127.00.1:8188/app/download?fileName=xxx',
success: (res) => {
if (res.statusCode === 200) {
uni.saveFile({
tempFilePath: res.tempFilePath,
success: function (e) {
console.log(JSON.stringify(e));
}
});
}
}
});
Java后台代码:
@RequestMapping("/app/download")
public ResponseEntity<byte[]> fileDownload(String fileName, HttpServletResponse response, HttpServletRequest request)
throws IOException
{
String filePath = Global.getDownloadPath() + fileName;//获取文件全名(含路径)
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("image/jpeg"));
headers.setContentDispositionFormData("attachment", "xxx");// xxx是文件名
File file = new File(filePath);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.OK); //返回IO流文件
}
我在PC端是可以直接下载该文件的,移动端应该如何去下载?

2019-06-18 08:26 负责人:无 分享
已邀请:
虫子的辛苦

虫子的辛苦 - 程序员

使用httpGet请求直接把文件所在服务的地址和路径传过去就行了,不用写后端的代码吧,就像这样直接传地址就可以直接下载了吧。
http://ip:8080/attach/测试.xlsx

  • 3***@qq.com

    下载下来的文件被重命名了一串字符串,没法修改怎么办。

    2019-11-03 14:32

  • 虫子的辛苦

    回复 3***@qq.com: 文件名无所谓吧,不影响安装

    2019-11-18 17:03

该问题目前已经被锁定, 无法添加新回复