丫丫amy
丫丫amy
  • 发布:2021-07-03 12:38
  • 更新:2021-12-07 09:58
  • 阅读:1668

【报Bug】uniapp使用uni.saveFile保存文件,安卓成功,ios失败

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX类型: 正式

HBuilderX版本号: 3.1.21

手机系统: iOS

手机系统版本号: IOS 14

手机厂商: 苹果

手机机型: iphone6

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

var downloadTask = uni.downloadFile({
url:url,
success: (res) => {
let that = this;
var tempFilePath = res.tempFilePath;
var nowEno = uni.getSystemInfoSync().platform;
if(nowEno == 'ios'){
tempFilePath = escape(tempFilePath)
}
console.log(tempFilePath)
uni.saveFile({
tempFilePath: tempFilePath,
success: (res) => {
cons ole.log(res.savedFilePath)
},
fail: (res) => {
console.log(res)
}
})
},
fail: (res) => {
console.log(res)
}

操作步骤:

var downloadTask = uni.downloadFile({
url:url,
success: (res) => {
let that = this;
var tempFilePath = res.tempFilePath;
var nowEno = uni.getSystemInfoSync().platform;
if(nowEno == 'ios'){
tempFilePath = escape(tempFilePath)
}
console.log(tempFilePath)
uni.saveFile({
tempFilePath: tempFilePath,
success: (res) => {
cons ole.log(res.savedFilePath)
},
fail: (res) => {
console.log(res)
}
})
},
fail: (res) => {
console.log(res)
}

预期结果:

能够正常获取到保存后的值

实际结果:

无法保存,报错

bug描述:

下载的文件有中文,在安卓系统下载正常,ios系统上如果没有编码提示文件找不到,编码后提示编码错误。

2021-07-03 12:38 负责人:天生DR 分享
已邀请:
4***@qq.com

4***@qq.com

我也遇到这个问题了,有其他的解决办法吗

DCloud_UNI_GSQ

DCloud_UNI_GSQ

仅中文名称的文件出现问题吗?

  • 丫丫amy (作者)

    是的,安卓中英文都可以,ios上文件中如果带中文就不行,不带中文能够正常下载保存

    2021-07-06 08:55

丫丫amy

丫丫amy (作者) - 90

已解决,ios状态下执行h5+,代码如下:

plus.io.resolveLocalFileSystemURL(tempFilePath,(srcEntry)=>{
plus.io.resolveLocalFileSystemURL("_doc",(dstEntry)=>{
dstEntry.getDirectory("uniapp_save",{create:true,exclusive:false},(saveEntry)=>{
//console.log("srcEntry.toURL",srcEntry.toURL())
//console.log("dstEntry.toURL",dstEntry.toURL())
//console.log("saveEntry.toURL",saveEntry.toURL())
let fnames = srcEntry.name.split(".");
let fileName = Buffer.from(fnames[0]).toString('hex')+(fnames[1]?('.'+fnames[1]):'');
//console.log("fileName",fileName)
srcEntry.moveTo(saveEntry,fileName,(res)=>{
const savedFilePath = res.toURL()
console.log("savedFilePath",savedFilePath)
uni.setStorage({
key: key,
data: savedFilePath
})
complete && complete(savedFilePath)
});
})
},(err)=>{
console.error(err);
})
});

天生DR

天生DR - 天生我材必有用

3.1.17.20210608 版本已经解决

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