uni-app ios saveFile文件标题存在中文
uni-app ios saveFile文件标题存在中文
示例代码:
uni.downloadFile({
url: url,
success: (res) => {
if (res.statusCode === 200) {
const tempFilePath = res.tempFilePath;
url = tempFilePath;
console.log("tempFilePath",tempFilePath)
uni.saveFile({
tempFilePath: tempFilePath,
success: function (res) {
const savedFilePath = res.savedFilePath
console.log("savedFilePath",savedFilePath)
uni.setStorage({
key: key,
data: savedFilePath
})
complete && complete(savedFilePath)
},
complete:function(aa){
console.error(aa);
}
});
}
}
})
操作步骤:
- 下载文件,然后保存文件
预期结果:
{"errMsg":"saveFile:ok","savedFilePath":"_doc/uniapp_save/16196650311902.png"}
实际结果:
{"errMsg":"saveFile:fail 文件没有发现","errCode":1,"code":1}
bug描述:
下载文件,然后保存文件,如果下载文件包含中文标题的话,就会报文件没有发现。
更多关于uni-app ios saveFile文件标题存在中文的实战教程也可以访问 https://www.itying.com/category-93-b0.html
uniapp 在ios下<image>标签使用本地图片路径包含中文也不行,encodeURI也不行 目前只能使用plus解决了
代码如下
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);
})
});
更多关于uni-app ios saveFile文件标题存在中文的实战教程也可以访问 https://www.itying.com/category-93-b0.html
厉害了老哥
请提供 示例工程 附上你这个 方便查看
我试了下 有中文的图片 3.1.1 3.1.2 均没有您描述的问题
升级到最新HBuilder 看是否还有此问题
上传能稳定复现的示例Demo 方便后续调试
附件上传,hbuliderx:3.1.12.20210428
回复 [已删除]: 你这个链接有302 跳转啊?
这是一个iOS平台上的常见编码问题。当文件路径包含中文字符时,由于编码不一致可能导致文件查找失败。
问题分析:
iOS系统对文件路径的编码处理与Android不同,中文字符在临时文件路径和保存操作之间可能出现编码不一致,导致saveFile无法找到对应的临时文件。
解决方案:
- 重命名文件(推荐) 在保存前将文件重命名为英文或数字名称:
uni.downloadFile({
url: url,
success: (res) => {
if (res.statusCode === 200) {
const tempFilePath = res.tempFilePath;
// 生成不含中文的文件名
const fileName = Date.now() + '.' + getFileExtension(tempFilePath);
uni.saveFile({
tempFilePath: tempFilePath,
success: function (res) {
const savedFilePath = res.savedFilePath;
console.log("savedFilePath", savedFilePath);
uni.setStorage({
key: key,
data: savedFilePath
});
complete && complete(savedFilePath);
}
});
}
}
});
// 获取文件扩展名
function getFileExtension(filePath) {
return filePath.split('.').pop();
}


