上传文件

basement.file 提供 uploadFile 上传文件方法,被上传的文件将通过 CDN 进行网络加速。文件存储服务目前支持图片、音频和视频文件上传,支持文件类型如下:

文件分类文件后缀
图片jpg/jpeg、png、gif、bmp、wbmp、webp、svg
音频mp3
视频mp4、ogg、webm

要了解完整的 API 调用配置,参考 文件存储 API

上传文件

通过 uploadFile 方法指定路径的方式上传一张公开的图片:

  1. const options = {
  2. // env: public, // 不指定存储方式 env 的情况下,默认为公开(public)
  3. filePath: path,
  4. headers: {
  5. contentDisposition: 'attachment',
  6. },
  7. };
  8. basement.file.uploadFile(options);

示例与教程

尝试在图片画廊小程序示例中,当用户新增一个图片条目的时候,需要上传一个图片作为附件。那么您需要让用户在添加时,在客户端选择一个图片上传到 Basement 文件存储服务,并将得到的图片路径记录在数据存储中。

增加 attach() 方法,作为上传图片的事件处理,用于上传图片和获取图片路径:

  1. // client/add-image/add-image.js
  2. // 选择并上传图片,获得图片 URL
  3. attach() {
  4. my.chooseImage({
  5. chooseImage: 1,
  6. success: res => {
  7. const path = res.apFilePaths[0];
  8. const options = {
  9. filePath: path,
  10. headers: {
  11. contentDisposition: 'attachment',
  12. },
  13. };
  14. basement.file.uploadFile(options).then((image) => {
  15. console.log(image);
  16. this.setData({
  17. imageUrl: image.fileUrl,
  18. });
  19. }).catch(console.log);
  20. },
  21. });
  22. },

提交新增图片条目时,将图片 URL 作为数据一并存储到数据存储中。

  1. // client/add-image/add-image.js
  2. // 将新的图片内容添加到当前用户的图片列表中
  3. add() {
  4. // 如果图片名称没有填,或者没有上传图片,则进行提示
  5. if (this.data.inputValue == '' || !this.data.imageUrl) {
  6. my.alert({
  7. title: '添加失败',
  8. content: '请填写图片名称和上传图片。',
  9. buttonText: '我知道了',
  10. });
  11. // 正常情况,写入数据存储
  12. } else {
  13. basement.user.getInfo().then((user) => {
  14. basement.db.collection('images').insertOne({
  15. text: this.data.inputValue,
  16. url: this.data.imageUrl ? this.data.imageUrl : false,
  17. userId: user.userId,
  18. uploadTime: new Date(),
  19. }).then(() => {
  20. my.navigateBack();
  21. }).catch(console.log);
  22. }).catch(console.log);
  23. }
  24. },

原文: https://docs.alipay.com/mini/cloud-service/tcg57g