uni-app中uni.downloadFile下载失败无法获取后台报错提示

发布于 1周前 作者 htzhanglong 来自 uni-app

uni-app中uni.downloadFile下载失败无法获取后台报错提示
图片

后台返回信息

图片

success 返回的信息

2 回复

不太确定是不是bug。还是说我使用的方式有问题。还是说本来就是这样的


在uni-app中,使用uni.downloadFile进行文件下载时,如果下载失败且无法获取后台报错提示,这通常是由于前端未能正确处理后台返回的响应或错误信息。以下是一个示例代码,展示了如何更全面地处理下载请求,包括捕获并显示错误信息。

示例代码

// 引入必要的模块
import { uni } from '@dcloudio/uni-app'

// 定义一个下载文件的函数
function downloadFile(url, filePath) {
  uni.showLoading({
    title: '下载中...',
  });

  uni.downloadFile({
    url: url, // 文件下载链接
    filePath: filePath, // 指定文件保存路径及文件名,为空则默认下载到临时文件目录
    success: (res) => {
      // 下载成功
      if (res.statusCode === 200) {
        // 如果服务器返回状态码为200,表示下载成功
        uni.hideLoading();
        uni.showToast({
          title: '下载成功',
          icon: 'success',
        });

        // 可以在这里对下载的文件进行处理,比如保存到相册或显示给用户
        // const tempFilePath = res.tempFilePath;
        // ...
      } else {
        // 否则,根据具体状态码处理错误
        handleError('下载失败,服务器返回状态码:' + res.statusCode);
      }
    },
    fail: (err) => {
      // 下载失败
      uni.hideLoading();
      handleError('下载失败,错误信息:' + JSON.stringify(err));
    },
  });

  // 定义一个错误处理函数
  function handleError(message) {
    // 显示错误信息
    uni.showToast({
      title: message,
      icon: 'none',
    });
    // 可以选择记录日志或进行其他错误处理
    // console.error(message);
  }
}

// 使用示例
downloadFile('https://example.com/path/to/file.zip', `${uni.env.USER_DATA_PATH}/file.zip`);

说明

  1. 显示加载提示:在下载开始时显示加载提示,增强用户体验。
  2. 处理成功响应:检查statusCode是否为200,以确定下载是否成功。
  3. 处理失败响应:在fail回调中捕获下载失败的情况,并显示错误信息。
  4. 错误处理函数:定义了一个handleError函数,用于统一处理错误信息。

通过这种方式,你可以更全面地捕获并处理uni.downloadFile的下载请求,确保即使下载失败,用户也能获得明确的错误信息。同时,你也可以根据具体需求对错误信息进行进一步的处理,比如记录到日志系统或进行其他错误恢复操作。

回到顶部