0.2.0 • Published 3 years ago

media-hosting-miniprogram-sdk v0.2.0

Weekly downloads
6
License
MIT
Repository
github
Last release
3 years ago

腾讯云智能媒资托管的小程序 SDK,使用 TypeScript 编写,自带类型定义并预构建为 JavaScript ES5。

安装

npm install media-hosting-miniprogram-sdk --save

接口文档

请参阅 接口文档

使用

  • 导入 SDK
import { MediaHosting } from 'media-hosting-miniprogram-sdk';
  • 初始化实例
const client = new MediaHosting({
    libraryId: 'smhxxx',
    getAccessToken(params, callback) {
        wx.request({
            // ...
        });
    },
});
  • 列出相簿
client.listDirectory((err, result) => {
    if (err) {
        if (err instanceof MediaHosting.RemoteError) {
            if (err.code === 'SpaceNotFound') {
                return wx.showModal({
                    content: '空间不存在',
                    confirmText: '确定',
                    showCancel: false,
                    success() {
                        wx.redirectTo({ url: '/' });
                    },
                });
            }
            // other Smart Media Hosting error
        } else if (err instanceof MediaHosting.WxRequestError) {
            // WeChat miniprogram error
        }
        // other unhandled error
        return wx.showToast({ icon: 'none', title: err.message, duration: 3000 });
    }
    const contents = result!.contents;
    // ...
});
  • 上传文件
wx.chooseMedia({
    maxDuration: 30,
    sizeType: ['original'],
    success(result) {
        for (const file of result.tempFiles) {
            client.uploadFile([
                albumName, // target album name
                file.tempFilePath.substr(file.tempFilePath.lastIndexOf('/') + 1),
                // get file name rather than full path
            ].join('/'), file.tempFilePath, (err) => {
                if (err) {
                    // upload failed
                    return;
                }
                // upload succeeded
            });
        }
    },
});
  • 获取相簿封面 URL
const albunNameList = contents.map(item => item.name); // string[]
client.getCoverUrl(albumNameList, size, (_err, result) => {
    // ignore error
    result = result || []; // if error occured, result is undefined
    const albums = albumNameList.map((name, index) => {
        return {
            name,
            coverUrl: result![index] || '',
            // note that we didn't handle any error so the coverUrl may be an empty string
        };
    });
    // use albums
});
  • 全屏查看媒体
const media = result!.contents; // listDirectory result
const pathList = media.map(item => [albumName, item.name].join('/')); // string[]
client.getFileUrl(pathList, (err, fileList) => {
    if (err) {
        // handle error
        return;
    }
    client.getPreviewUrl(pathList, (_err, previewList) => {
        // ignore error
        previewList = previewList || [];
        wx.previewMedia({
            sources: media.map((item, index) => {
                return {
                    url: fileList![index],
                    type: item.type,
                    poster: previewList![index] || '',
                };
            }),
            current: index, // current index
        });
    });
});