小程序开放平台

文档中心
基础
路由
跳转
转发
界面
网络
支付
数据缓存
媒体
图片
地图
视频
createVideoContext
VideoContext
chooseVideo
chooseMedia
saveVideoToPhotosAlbum
compressVideo
getVideoInfo
富文本
位置
开放接口
设备
XHSML
性能
第三方平台
文件
数据分析
画布

xhs.chooseMedia

开发
>
JS API
>
媒体
>
视频
>
chooseMedia
>
更新时间:2025-04-10 17:50:10

以Promise风格调用: 支持

拍摄或从手机相册中选择图片或视频。

参数

Object object

属性
类型
默认值
必填
说明
countnumber最多可以选择的图片张数,默认9
mediaTypearrayimage,video文件类型,可选值有image、video、mix。如果要实现互斥选择,可以传入image、video
sourceTypearrayalbum,camera图片和视频选择的来源
maxDurationnumber10拍摄视频最长拍摄时间,单位秒。时间范围为 3s 至 60s 之间。不限制相册。
sizeTypearrayoriginal,compressed是否压缩所选文件,可选值为original、compressed
camerastring仅在 sourceType 为 camera 时生效,使用前置或后置摄像头
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

object.camera 的合法值

说明
front使用前置摄像头
back使用后置摄像头

object.success 回调函数

属性
类型
说明
tempFilesarray
typestring
errMsgstringchooseMedia:ok
type 的合法值
合法值
说明
image图片
video视频
mix图片和视频

实例代码

function chooseMedia(options = {}) {
  return new Promise((resolve, reject) => {
    xhs.chooseMedia({
      ...options,
      success: (res) => resolve(res),
      fail: (err) => reject(err),
    });
  });
}

// 调用示例
chooseMedia({
  count: 5,                      // 最多选择 5 个文件
  mediaType: ['image', 'video'], // 支持图片和视频
  sourceType: ['album', 'camera'], // 来源为相册和相机
  maxDuration: 15,               // 拍摄视频最长 15 秒
  sizeType: ['original', 'compressed'], // 支持原图和压缩图
  camera: 'back',                // 使用后置摄像头
})
  .then((res) => {
    console.log('选择成功:', res);
    res.tempFiles.forEach((file) => {
      console.log('文件路径:', file.tempFilePath);
      console.log('文件大小:', file.size);
    });
    console.log('文件类型:', res.type); // image 或 video
  })
  .catch((err) => {
    console.error('选择失败:', err);
  });