开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
基础
应用级事件
界面
跳转
多媒体
缓存
文件
位置
网络
发起请求
上传
下载
downloadtask
websocket
设备
worker
数据安全
分享
收藏
自定义通用菜单
更新管理
web-view组件控制
升级支付宝最新版本
隐私信息授权
小程序广告
开放能力 api
开发 > api > 基础 api > 网络 > 下载 > my.downloadfile
评论
收藏
我的文档
设置

downloadtask my.downloadfile(object object)

主体: 企业支付宝小程序个人支付宝小程序

下载文件

客户端发起的是一个 https get 请求。

object object

查看示例

属性 类型 默认值 必填 兼容性 描述
url string - -

下载地址。支持 https,不支持 http。除在线地址外,url 还支持图片类型的 base64 格式。客户端 10.5.10 ,ide 3.8.3 开始支持任意文件类型的 base64 格式

filepath string -
支付宝: 10.2.80
ide: 3.5.1

指定文件下载后存储的路径 (本地用户路径)
注:若不指定此参数,下载的文件会被存储为本地临时文件

header object - -

http 请求 header。

timeout number 60000
ios 支付宝: 10.3.20
android 支付宝: 10.2.80
ide: 3.4.3

超时时间,单位 ms

success function - -

调用成功的回调函数

fail function - -

调用失败的回调函数

complete function - -

调用结束的回调函数(调用成功、失败都会执行)

success 回调函数

参数

object res

属性 类型 兼容性 描述
apfilepath string -

下载文件保存的路径(本地临时文件),入参未指定 filepath 的情况下可用

tempfilepath string
基础库: 2.7.23

同 apfilepath

filepath string
支付宝: 10.2.80
ide: 3.5.1

下载文件保存的路径(本地用户文件),入参指定 filepath 的情况下可用,其值与指定的 filepath 相同

statuscode number
基础库: 2.8.8
支付宝: 10.3.30
ide: 3.8.0

服务器返回的 http 状态码

header object
基础库: 2.8.8
支付宝: 10.3.30
ide: 3.8.0

服务器返回的 header

datalength number
支付宝: 10.3.30
ide: 3.8.0

资源大小。和 response header 中的 content-length 相等

fail 回调函数

参数

object err

属性 类型 兼容性 描述
error number -

错误码

errormessage string -

错误信息

data string
支付宝: 10.3.80
ide: 3.8.0

开发者服务器返回的数据。

statuscode number
支付宝: 10.3.80
ide: 3.8.0

开发者服务器返回的 http 状态码。

header object
支付宝: 10.3.80
ide: 3.8.0

开发者服务器返回的 http response header。

downloadtask

支付宝客户端 10.1.35 及以上版本,低版本需做 兼容处理

可用于获取 http 响应头,监听上传进度变化,以及取消上传任务的对象。

fail 回调的参数为 object,error 属性为错误码,errormessage 属性为错误消息。

错误码 错误消息 凯发app官方网站的解决方案
2 参数非法

请检查是否有必填项没传,参数类型是否正确

缺少参数 xxx

传入必填参数

参数 xxx 类型错误

检查参数类型

9 downloadfile:fail abort

调用了 downloadtask.abort() 中断了请求任务。

12 下载超时

若文件过大,可使用 timeout 设定超时时间。

请求失败。

请检查网络环境是否正常,服务器是否稳定,外网下是否能正常请求。

20 请求 url 不支持 http,请使用 https。

小程序已经不支持 http 请求,请使用 https。

下载示例
下载后将路径的后缀名转换为真实后缀名
下载后如何应用
不指定 filepath
指定 filepath
my.downloadfile({
  url: 'https://img.alicdn.com/tfs/tb1x669sxxxxxbdafxxxxxxxxxx-520-280.jpg',
  success(res) {
    console.log('downloadfile success:',res.apfilepath,res.tempfilepath); // apfilepath 与 tempfilepath 等价
  },
  fail(res) {
    console.log('downloadfile fail:',res);
  },
});
my.downloadfile({
  url: 'https://alidata-pub.oss-cn-hangzhou.aliyuncs.com/test.pdf', // 请替换为有效的 url
  filepath: `${my.env.user_data_path}/my.pdf`, // 指定存储路径
  success(res) {
    console.log('downloadfile success:',res.filepath); // 指定 filepath 才有此字段,与传入的 filepath 相等
  },
  fail(res) {
    console.log('downloadfile fail:',res);
  },
});
let fs = my.getfilesystemmanager();
my.downloadfile({
  url: 'https://img.alicdn.com/tfs/tb1x669sxxxxxbdafxxxxxxxxxx-520-280.jpg',
  success(res) {
    const downpath = res.tempfilepath; // 下载后的路径,后缀名可能被篡改
    // 先通过 detectfiletype 获取真正后缀名
    my.detectfiletype({
      filepath: downpath,
      success(res) {
        console.log('真正的后缀名:',res.extension);
        // 保存文件,通过入参 filepath 修正路径
        fs.savefile({
          tempfilepath: downpath,
          filepath: `${my.env.user_data_path}/img${res.extension}`,
          success: (res1) => {
            console.log('被修正过的路径',res1.savedfilepath)
          }
        })
      }
    });
  }
});
my.downloadfile({
    url: 'https://...', // 需要下载的资源
    success(res) {
      // 如果是图片 可以预览
      // previewimage(res.tempfilepath);
      
      // 如果是 pdf 可以查看
      // opendocument(res.tempfilepath);
      
      // 如果是图片 可以保存相册
      // saveimagetophotosalbum(res.tempfilepath);
      
      // 如果是视频 可以保存相册
      // savevideotophotosalbum(res.tempfilepath);
    }
});
// 预览图片
function previewimage(path) {
  my.previewimage({
    urls: [ res.apfilepath ] 
  });
}
// 打开 pdf 文件
function opendocument(path) {
  my.opendocument({
    filetype: 'pdf',
    filepath: path
  });
}
// 保存图片到相册
function saveimagetophotosalbum(path) {
  my.saveimagetophotosalbum ({
    filepath: path,
    success (res) {
      console.log ('saveimagetophotosalbum 调用成功', res);
    }
  });
}
// 保存视频到相册
function savevideotophotosalbum(path) {
  my.savevideotophotosalbum ({
    filepath: path,
    success (res) {
      console.log ('savevideotophotosalbum 调用成功', res);
    }
  });
}
  • tip
    只有当服务端状态码为 200,my.downloadfile 才会进入 success 回调。
  • tip
    my.downloadfile 支持下载任何类型的文件。但图片类的后缀名可能会被篡改为 .image、视频类的后缀名可能被篡改为 .video,.docx/.excel等可能被改为 .other。可以通过 my.detectfiletype 获取文件真正的类型。可参考上文示例代码【代码示例->下载后将路径的后缀名转换为真实后缀名】
  • tip
    my.downloadfile 下载后的文件路径可从出参 apfilepath 或 filepath 获取,两者均为内部虚拟路径,只能通过小程序的 api 访问。暂不支持保存文件到外部存储。具体可参考上文【代码示例->下载后如何应用】
  • tip
    10.3.70 以前此接口有缓存,且缓存无法去除。10.3.70 版本去掉了此接口的缓存功能。
  • bug
    支付宝 10.3.90 以下版本安卓端不支持 http 重定向,此时可能出现 ios 下载成功而 android 下载失败的情况
  • tip
    下载接口没有文件大小的限制。filesystemmanager.savefile 保存文件接口有单个文件不能超过 30m、文件夹不能超过 200m 的限制。
  • bug
    ios 端 10.5.10 以前,下载时指定的 filepath 若存在中文,会导致 my.opendocument 无法预览。此缺陷 10.5.10 已修复。
  • bug
    ios 端支付宝 10.5.16 以下版本,my.downloadfile 可能会生成内部扩展名不正确的本地临时文件(可以使用小程序的文件 api 正常读取和操作,但通过 my.savefiletodisk 保存到系统存储空间后无法打开)。此缺陷已经在 10.5.16 版本修复。对于低版本的客户端,调用 downloadfile 时指定包含正确的扩展名的 filepath 入参可以规避此问题。
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图