上传文件
basement.file
提供 uploadFile
上传文件方法,被上传的文件将通过 CDN 进行网络加速。文件存储服务目前支持图片、音频和视频文件上传,支持文件类型如下:
文件分类 | 文件后缀 |
---|---|
图片 | jpg/jpeg、png、gif、bmp、wbmp、webp、svg |
音频 | mp3 |
视频 | mp4、ogg、webm |
要了解完整的 API 调用配置,参考 文件存储 API。
上传文件
通过 uploadFile
方法指定路径的方式上传一张公开的图片:
const options = {
// env: public, // 不指定存储方式 env 的情况下,默认为公开(public)
filePath: path,
headers: {
contentDisposition: 'attachment',
},
};
basement.file.uploadFile(options);
示例与教程
尝试在图片画廊小程序示例中,当用户新增一个图片条目的时候,需要上传一个图片作为附件。那么您需要让用户在添加时,在客户端选择一个图片上传到 Basement 文件存储服务,并将得到的图片路径记录在数据存储中。
增加 attach()
方法,作为上传图片的事件处理,用于上传图片和获取图片路径:
// client/add-image/add-image.js
// 选择并上传图片,获得图片 URL
attach() {
my.chooseImage({
chooseImage: 1,
success: res => {
const path = res.apFilePaths[0];
const options = {
filePath: path,
headers: {
contentDisposition: 'attachment',
},
};
basement.file.uploadFile(options).then((image) => {
console.log(image);
this.setData({
imageUrl: image.fileUrl,
});
}).catch(console.log);
},
});
},
提交新增图片条目时,将图片 URL 作为数据一并存储到数据存储中。
// client/add-image/add-image.js
// 将新的图片内容添加到当前用户的图片列表中
add() {
// 如果图片名称没有填,或者没有上传图片,则进行提示
if (this.data.inputValue == '' || !this.data.imageUrl) {
my.alert({
title: '添加失败',
content: '请填写图片名称和上传图片。',
buttonText: '我知道了',
});
// 正常情况,写入数据存储
} else {
basement.user.getInfo().then((user) => {
basement.db.collection('images').insertOne({
text: this.data.inputValue,
url: this.data.imageUrl ? this.data.imageUrl : false,
userId: user.userId,
uploadTime: new Date(),
}).then(() => {
my.navigateBack();
}).catch(console.log);
}).catch(console.log);
}
},