uni-app unicloud 七牛云扩展存储,后台怎么没有accessKey
uni-app unicloud 七牛云扩展存储,后台怎么没有accessKey
unicloud 七牛云扩展存储,后台怎么没有accessKey
需要这个key在后端七牛云SDK去存储到uni这边的空间
2 回复
只能通过API获取。请参考文档:https://doc.dcloud.net.cn/uniCloud/ext-storage/dev.html
在使用uni-app结合unicloud以及七牛云进行扩展存储时,如果后台没有正确配置accessKey
,会导致无法成功上传文件到七牛云。以下是一个详细的代码示例,展示如何在uni-app和unicloud中集成七牛云,并确保accessKey
等配置正确。
1. 准备工作
首先,你需要在七牛云上创建一个存储空间,并获取到accessKey
、secretKey
和存储空间名称。
2. 在unicloud中配置七牛云扩展存储
在unicloud的cloudfunctions
目录下创建一个新的云函数,比如qiniuUpload
,并安装七牛云的SDK:
npm install qiniu --save
3. 云函数代码
以下是qiniuUpload
云函数的示例代码:
const cloud = require('wx-server-sdk');
const qiniu = require('qiniu');
const accessKey = 'your_access_key'; // 在此处填写你的accessKey
const secretKey = 'your_secret_key'; // 在此处填写你的secretKey
const bucket = 'your_bucket_name'; // 在此处填写你的存储空间名称
cloud.init();
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
const options = {
scope: bucket,
};
const putPolicy = new qiniu.rs.PutPolicy(options);
const uploadToken = putPolicy.uploadToken(mac);
const config = new qiniu.conf.Config();
const formUploader = new qiniu.form_up.FormUploader(config);
const key = 'example_key_' + Date.now(); // 文件在七牛云上的存储路径
exports.main = async (event, context) => {
const { fileID, filePath } = event;
try {
const fileContent = await cloud.downloadFile({
fileID,
});
const localFile = fileContent.tempFilePath;
const ret = await formUploader.putFile(uploadToken, key, localFile, null);
return {
statusCode: 200,
result: {
key,
hash: ret.hash,
url: `http://${bucket}.qiniudns.com/${key}`,
},
};
} catch (error) {
return {
statusCode: 500,
result: error.message,
};
}
};
4. 前端调用云函数
在uni-app的前端代码中,你可以通过调用这个云函数来上传文件:
uniCloud.callFunction({
name: 'qiniuUpload',
data: {
fileID: 'your_file_id', // 替换为实际的fileID
},
success: (res) => {
console.log('Upload Success:', res.result);
},
fail: (err) => {
console.error('Upload Failed:', err);
},
});
确保在调用云函数之前,用户已经上传了文件到uniCloud的文件存储,并获取到了fileID
。
以上代码展示了如何在uni-app和unicloud中集成七牛云进行文件上传,并确保accessKey
等配置正确。请根据你的实际情况替换代码中的accessKey
、secretKey
和存储空间名称。