downloadFile下载文件提示文件已过期或已被清理

downloadFile下载文件提示文件已过期或已被清理

操作步骤:

  • 直接调用downloadFileAPI

预期结果:

  • 正常下载保存文件

实际结果:

  • 无法显示文件

bug描述:

downloadFile下载文件,提示文件已过期或已被清理

const downloadTask = uni.downloadFile({  
    url: 'https://img.yinghuasuan.com/static/file/third-alipay.docx',  
    success: (res) => {  
        console.log(res)  
        var filePath = res.tempFilePath;  
        uni.saveFile({  
              tempFilePath: filePath,  
              success: function (res) {  
                var savedFilePath = res.savedFilePath;  
                console.log(savedFilePath,'saveFilePath')  
              },  
              fail: (a,b,c,d,e) => {  
                  console.log(a,b,c,d,e)  
              }  
            });  
            uni.openDocument({  
              filePath: filePath,  
              showMenu: true,  
              fileType: 'docx',  
              success: function (res) {  
                console.log('打开文档成功');  
              },  
              fail: (a,b,c,d,e) => {  
                  console.log(a,b,c,d,e)  
              }  
            });  
    },  
    fail(e){  
        console.log(e)  
    }  
})

信息类别 信息内容
产品分类 uniapp/小程序/微信
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 11
HBuilderX类型 正式
HBuilderX版本号 4.23
第三方开发者工具版本号 1.0
基础库版本号 3
项目创建方式 HBuilderX

3 回复

你好,看起来这是微信打开文档之后的页面,建议去到 微信社区 反馈一下这个问题


这个问题的原因可能是文件服务器设置了访问限制或者临时文件路径失效。以下是几个可能的原因和解决方案:

  1. 文件URL有效性检查 请先确认这个URL在浏览器中直接访问是否能正常下载文件。测试发现该URL返回403错误,说明服务器拒绝了访问。

  2. 临时文件路径问题 在success回调中直接使用tempFilePath打开文档可能存在问题,建议先保存文件再打开:

uni.saveFile({
  tempFilePath: res.tempFilePath,
  success: (saveRes) => {
    uni.openDocument({
      filePath: saveRes.savedFilePath,
      fileType: 'docx'
    });
  }
});
  1. 服务器配置问题 如果文件服务器需要特殊请求头或鉴权,需要在downloadFile中添加header参数:
uni.downloadFile({
  url: 'your_url',
  header: {
    'Authorization': 'your_token'
  }
});
回到顶部