uni-app savefile 保存doc文件时提示文件没有发现
uni-app savefile 保存doc文件时提示文件没有发现
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 11.2.3 | HBuilderX |
示例代码:
openDocument() {
uni.downloadFile({
url: 'http://122.9.134.74:9530/jeeplus-vue/userfiles/bussinessFlie/hr/CrrcPaList/2021/12/testpdf.pdf',
success: (res) => {
console.log(res)
uni.openDocument({
filePath: res.tempFilePath,
success: () => {
console.log('打开文档成功');
},
fail(res) {
console.log(res)
}
});
}
});
},
操作步骤:
- 点击 url 预览文件
预期结果:
- 软件内打开文件
实际结果:
{
"errMsg": "openDocument:fail 文件不存在,https://ask.dcloud.net.cn/article/282",
"errCode": -4,
"code": -4
}
bug描述:
ios直接预览文件,download提示都成功 但是打开时提示
{
"errMsg": "openDocument:fail 文件不存在,https://ask.dcloud.net.cn/article/282",
"errCode": -4,
"code": -4
}
更多关于uni-app savefile 保存doc文件时提示文件没有发现的实战教程也可以访问 https://www.itying.com/category-93-b0.html
此版本使用其他设备是否正常?仅这个设备出现问题吗?
更多关于uni-app savefile 保存doc文件时提示文件没有发现的实战教程也可以访问 https://www.itying.com/category-93-b0.html
只测过这一个设备 你那边试过我提供的url 吗
url 携带的信息是有什么特殊的吗 ios 的http response中需要指定啥参数吗, 我在示例中有些url 在ios可以打开
回复 1***@163.com: 你的respose 中的 content-Type 无效
我两种方式验证了下 1.浏览器下载了pdf 本地起个web服务正常 2.手机抓包 发现 http的response 的 content-type 无效
回复 天生DR: 加上了content-type 也还是不行
回复 1***@163.com: 你本地起个web 服务 然后把这个文件 试一下 然后对比一下服务端是不是有什么特殊限制
回复 天生DR: 你的意思将uniapp 用web打开 ?
回复 1***@163.com: 就是你本地模拟服务器 起个服务 我这边是OK的 不知道你们服务端做了什么…
根据你的代码和错误信息,这个问题通常是由于文件路径处理不当导致的。以下是几个关键点:
-
临时文件路径问题:
downloadFile返回的tempFilePath在 iOS 上可能不是直接可用的文件路径。特别是当文件是 PDF 或其他文档格式时,需要确保文件已完全下载并保存到本地。 -
文件保存:建议在下载成功后,使用
uni.saveFile将临时文件保存到本地永久存储,然后再用保存后的路径打开文档。修改后的代码示例如下:
openDocument() {
uni.downloadFile({
url: 'http://122.9.134.74:9530/jeeplus-vue/userfiles/bussinessFlie/hr/CrrcPaList/2021/12/testpdf.pdf',
success: (res) => {
if (res.statusCode === 200) {
const tempFilePath = res.tempFilePath;
uni.saveFile({
tempFilePath: tempFilePath,
success: (saveRes) => {
const savedFilePath = saveRes.savedFilePath;
uni.openDocument({
filePath: savedFilePath,
success: () => {
console.log('打开文档成功');
},
fail: (openRes) => {
console.log('打开文档失败', openRes);
}
});
},
fail: (saveErr) => {
console.log('保存文件失败', saveErr);
}
});
}
},
fail: (downloadErr) => {
console.log('下载文件失败', downloadErr);
}
});
}

