uni-app unicloud 七牛云扩展存储,后台怎么没有accessKey

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app unicloud 七牛云扩展存储,后台怎么没有accessKey
unicloud 七牛云扩展存储,后台怎么没有accessKey

需要这个key在后端七牛云SDK去存储到uni这边的空间

图片

2 回复

在使用uni-app结合unicloud以及七牛云进行扩展存储时,如果后台没有正确配置accessKey,会导致无法成功上传文件到七牛云。以下是一个详细的代码示例,展示如何在uni-app和unicloud中集成七牛云,并确保accessKey等配置正确。

1. 准备工作

首先,你需要在七牛云上创建一个存储空间,并获取到accessKeysecretKey和存储空间名称。

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等配置正确。请根据你的实际情况替换代码中的accessKeysecretKey和存储空间名称。

回到顶部