微信小程序下载后端返回的文件流

			downtest() {
				let temp = {
					"title": ["排名", "车号", "车队", "车手", "领航", "赛段成绩", "距首车成绩", "距前车差距", "发车时间", "冲刺时间", "赛段用时", "罚时",
						"补时"
					],
					"value": [
						[1, "111", "重庆拉力车队", "钟川", "张铮", "00时49分59秒0毫秒", "-", "-", "10点20分10秒8毫秒", "11点10分09秒9毫秒",
							"00时49分59秒0毫秒", "00时00分10秒8毫秒", "", "https://wei.ltd.com/assets/images/no-image.jpg"
						],
						[2, "1", "浙江同联拉力车队", "徐俊", "朱盛平", "01时00分00秒0毫秒", "00时00分11秒0毫秒", "00时00分11秒0毫秒",
							"10点10分10秒8毫秒", "11点10分10秒8毫秒", "01时00分00秒0毫秒", "", "",
							"https://wei.ltd.com/assets/images/no-image.jpg"
						],
						[3, "666", "66", "666", "66", "01时04分51秒0毫秒", "00时00分15秒0毫秒", "00时00分04秒0毫秒",
							"10点20分10秒8毫秒", "11点25分01秒8毫秒", "01时04分51秒0毫秒", "", "",
							"https://wei.ltd.com/assets/images/no-image.jpg"
						],
						[4, "123", "方格旗", "眼泪", "泡泡", "04时00分59秒0毫秒", "00时03分11秒0毫秒", "00时02分56秒0毫秒",
							"8点48分00秒0毫秒", "12点48分59秒789毫秒", "04时00分59秒0毫秒", "", "",
							"https://static.ltdcdn.com/uploadfilev2/image/0/501/261/2023-08/16927686744833.png"
						]
					]
				}
				let obj = {
					file_name: 'ces',
					data: JSON.stringify(temp)
				}
				let header = {
					// #ifdef MP-WEIXIN
					"User-Agen": 'miniProgram',
					// #endif
					// #ifdef H5
					"User-Agen": 'h5',
					// #endif
				}
				uni.request({
					url: `请求url`,
					header: header,
					method: 'post',
					responseType: "arraybuffer",
					data: obj,
					success: (res) => {
						let temp = res.statusCode == 200 ? res.data : res
						const fs = wx.getFileSystemManager(); //获取全局唯一的文件管理器 
						fs.writeFile({ //写文件
							filePath: wx.env.USER_DATA_PATH +
								"/统计报表.xlsx",
							data: temp, // res.data就是获取到的二进制文件流
							encoding: "binary", //二进制流文件必须是 binary
							success(e) {
								wx.openDocument({ // 打开文档
									filePath: wx.env.USER_DATA_PATH +
									"/统计报表.xlsx", //拿上面存入的文件路径
									showMenu: true, // 显示右上角菜单
									success: function(x) {
										console.log("successfun", x);
									},
								})
							},
							fail: (err) => {
								// 文件下载失败的相关处理
								console.log('download fail', err);
							}
						})
					}
				})
			},

responseType: "arraybuffer",  请求后端的二进制文件流 必须要加这段声明 ,否则会导致下载的文件打不开或者打开空白

你可能感兴趣的:(微信小程序,小程序)