盒子
盒子
文章目录
  1. 1. 基本url方式下载(自定义下载文件名称)
  2. 2. 基于后台返回流的方式下载

微信小程序文件下载两种方式

1. 基本url方式下载(自定义下载文件名称)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
downloadDailyYear: function() {
util.get(api.downloadDailyYear).then(function(res) { // 自定义get请求,可忽略
if (res.code == 200) {
var fileName = res.data.substring(res.data.lastIndexOf("/") + 1, res.data.indexOf("."));
wx.downloadFile({
url: api.appUrl + res.data,
// 1. 必须带有这个wx.env.USER_DATA_PATH,表示存储在用户本地 !!!
// fileName表示自定的文件名称
// 实际在PC端调试存储位置为类似 C:\Users\SJshe\AppData\Local\微信开发者工具\User Data\WeappFileSystem\o6zAJs3c0u3SeBVn_9MUgG6UZJ1M\wx2efdf4edd8bccb88
filePath: wx.env.USER_DATA_PATH + "/" + fileName,
success: function (res) {
if (res.statusCode === 200) {
wx.openDocument({
filePath: res.filePath,
fileType: ['xlsx'], // 2. 这个必须写合法类型,不然下载不了(个人认为官方应该特别说明) !!!
success: function (res) {
console.log('打开文档成功')
},
fail: function(e) {
console.log(e.errMsg);
}
})
}
},
fail: function(e) { // 强烈建议打印失败原因,便于排查
console.log(e.errMsg);
}
});
}
});
},

2. 基于后台返回流的方式下载

1
2
3
4
5
@GetMapping(value = "/downloadDailyYear")
public BaseResponse<byte[]> downloadDailyYear(HttpSession session, @RequestParam String id,
@RequestParam @DateTimeFormat(iso = ISO.DATE) Date startDate,
@RequestParam @DateTimeFormat(iso = ISO.DATE) Date endDate) {
}
1
2
3
4
5
6
public class BaseResponse<T> {
private String code;
private String message;
private T data;
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
downloadDailyYear: function () {
var name = '';
wx.getStorage({
key: 'userInfo',
success(res) {
name += res.data.name + res.data.employeeNo;
}
})

var year = new Date().getFullYear();
util.get(api.downloadDailyYear, {
'id': wx.getStorageSync('userId'),
'startDate': year + "-" + "01-01",
'endDate': year + "-" + "12-31"
}).then(function (res) {
if (res.code == 200) {
// 1. 必须带有这个wx.env.USER_DATA_PATH,表示存储在用户本地 !!!
var filePath = wx.env.USER_DATA_PATH + '/' + year + '工作周报-' + name;
FileSystemManager.writeFile({
filePath: filePath,
data: res.data,
encoding: 'base64', // 2. base64解密写入, 后台返回的byte[]数组是经过base64编码的,其他方式写入文件打开格式不对
success: function(res) {
wx.openDocument({
filePath: wx.env.USER_DATA_PATH + '/' + year + '工作周报-' + name,
fileType: ['xlsx'], // 3. 这个必须写合法类型,不然下载不了 !!!
success: function (res) {
console.log('打开文档成功')
},
fail: function (e) {
console.log(e.errMsg);
}
})
},
fail: function (e) {
console.log(e.errMsg);
}
});
}
});
},
支持一下
扫一扫,支持沈健
  • 微信扫一扫
  • 支付宝扫一扫