· server · 2 min 阅读
缤纷云的使用介绍
介绍使用 Nodejs 生成预签名链接
缤纷云简介
缤纷云(北京)科技有限公司出品,公司注册于 2023-06-13 日,还是一个很新的产品。它吸引我的点是50GB 存储 + 30GB 流量/月 + 20 万次请求/月
免费额度,而且管理控制台用着很舒服,并且功能更新及时。
使用方式
1. 获取预签名链接
const router = require('koa-router')();
const { S3Client, PutObjectCommand, GetObjectCommand } = require('@aws-sdk/client-s3');
const { getSignedUrl } = require('@aws-sdk/s3-request-presigner');
const s3Client = new S3Client({
region: '******', //桶信息中的服务可用区
endpoint: '******', //桶信息中的服务端点
credentials: {
accessKeyId: '******', //AccessKeyId
secretAccessKey: '******', //AccessKey
},
});
router.get('/put-signedurl', async (ctx) => {
const putCmd = new PutObjectCommand({
Bucket: '******', //桶名称
Key: 'avatar/******.png', //图片的key,avatar/ 就是把它放到avatar文件夹下
});
//获取预签名链接
await getSignedUrl(s3Client, putCmd, { expiresIn: 3600 }).then((url) => {
ctx.body = url;
});
});
router.get('/get-signedurl', async (ctx) => {
const putCmd = new GetObjectCommand({
Bucket: '******',
Key: 'avatar/******.png',
});
//获取访问签名链接
await getSignedUrl(s3Client, putCmd, { expiresIn: 3600 }).then((url) => {
ctx.body = url;
});
});
module.exports = router.routes();
2. 微信小程序图片上传
Page({
onLoad() {
wx.chooseMedia({
count: 9,
mediaType: ['image'],
sourceType: ['album'],
success(res) {
let url = ''; // put-signedurl获取到的链接
var fs = wx.getFileSystemManager(); // 读取文件 二进制内容
wx.request({
url: url,
method: 'put',
header: {
'content-type': null, // 小程序 content-type 默认为 application/json, 这里强制为 null
},
data: fs.readFileSync(res.tempFiles[0].tempFilePath),
success: function (res) {
console.log('上传成功');
console.log(res);
},
error: function (err) {
console.log('上传失败');
console.log(err);
},
});
},
});
},
});