小程序开放平台

文档中心
基础
界面
网络
数据缓存
媒体
图片
地图
视频
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);
  });