# 组件支持

使用接口或者 SDK 方法上传文件成功后,会得到文件 fileID ,可以直接将此 fileID 填入微信小程序的组件 src 等属性中,或一些基础库方法属性中。

需要注意:fileID的直接访问遵循对象存储的权限配置,如遇到权限拒绝等原因,请先检查权限配置;刚配置的权限请等待3-5分钟后再试,CDN正在全网生效。

# 支持的组件

小程序组件支持传入云文件 ID,支持列表如下:

组件名 描述 属性
image 图片 src
video 视频 src、poster
cover-image 覆盖原生图片 src

# 支持的方法

方法名称 接口 参数
背景音频管理器 getBackgroundAudioManager src
音频播放管理器 createInnerAudioContext src
全屏预览图片 previewImage urls、current

# 资源复用下使用

目前微信小程序还没有原生支持资源复用情况下的 fileID 传入。表现效果是:

「小程序A」的「环境E」,「小程序A」可以访问「环境E」的资源;而「环境E」共享给「小程序B」后,「小程序B」会显示找不到此路径,或者资源拒绝等错误。

目前给出一些中转方案,请选择合适的:

# 1. 全读情况下,直接进行 id 转换

如果你的资源默认开放所有人可读,则可以使用 wxs 标签处理一下 fileid。如下例子:

在页面的 wxml 同级目录中创建一个文件,名字为 tool.js

function loadcos(url){
  var res = url
  if (url.indexOf('cloud://') === 0) {
    var first = url.indexOf('.')
    var end = url.indexOf('/', first)
    res = 'https://' + url.slice(first + 1, end) + '.tcb.qcloud.la/' + url.slice(end + 1, url.length)
  }
  return res
}

module.exports={
  loadcos:loadcos
}

然后在 wxml 中参照下面填写:

<wxs module="tool" src="./tool.wxs"></wxs>
<image src="{{tool.loadcos(cloudid)}}"></image>

其中上面 cloudid,是在页面 js 文件中 data 数据。

# 2. 权限读情况下,后端直接返回对应的http

如果你的资源有权限读,则建议直接由后端控制。

或者自己用获取临时链接方法封装一个预加载方法。