iT邦幫忙

1

RPGmakerMV插件【js】& OSS下載文件 & sts 救命超級大雜燴 第一次問問題就很崩潰

  • 分享至 

  • xImage

我正在編寫一個rpgmaker的插件,就是實現從oss上下載東西(比如logo.js)
原理大概是:發送請求給sts服務器,sts返回一些登錄的臨時數據,再拿臨時數據訪問oss服務器
然後看大陸阿里官方的文檔沒怎麼看懂,就寫下了這樣的代碼
(應該很多地方都參數搞錯了qwq,不知道怎麼寫,應該沒人想過RPGMaker+OSS)
(function() {

fetch('http://sts.oss.hk.furcafe.top/')   /*我的sts服務器
.then(resp => resp.json())
.then(result => {
  const store = new OSS({
    // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
    accessKeyId: result.AccessKeyId,
    accessKeySecret: result.AccessKeySecret,
    // 从STS服务获取的安全令牌(SecurityToken)。
    stsToken: result.SecurityToken,
    // 填写Bucket所在地域。以华东1(杭州)为例,设置region为oss-cn-hangzhou。
    region: 'oss-cn-hongkong',
    // 填写Bucket名称,例如examplebucket。
    bucket: 'furcafe-hk'
  });

// 定义插件函数
function downloadFile(fileKey, localPath) {
  client.assumeRole('acs:ram::1526461602713651:role/ramosstest', stsToken, 3600).then(function (result) {
    var oss = require('ali-oss'); // 引入阿里云OSS SDK
    var client = new oss({
      accessKeyId: result.credentials.AccessKeyId,
      accessKeySecret: result.credentials.AccessKeySecret,
      stsToken: result.credentials.SecurityToken,
      bucket: 'furcafe-hk',
      region: 'oss-cn-hongkong'
    }); // 初始化OSS客户端

    client.getObject({
      Bucket: 'oss-cn-hongkong',
      Key: fileKey
    }).then(function (response) {
      // 下载成功,将文件保存到本地
      var fs = require('fs');
      fs.writeFileSync(localPath, response.content);
      console.log('File downloaded successfully!');
    }).catch(function (err) {
      // 下载失败,输出错误信息
      console.log(err);
    });
  }).catch(function (err) {
    // 获取临时访问凭证失败,输出错误信息
    console.log(err);
  });
}

// 将插件函数添加到RPGmaker的全局对象中
window.OSSDownload = {
  downloadFile: downloadFile
};

})()})

懇求各位大佬們,能幫就幫吧,謝謝!(小絕望,真的有人能解決嗎?
(代碼可直接重寫,如果您願意)

jyo238 iT邦新手 5 級 ‧ 2023-06-12 08:56:48 檢舉
看起來文件上好像沒提到getObject,可能你照著官方文件做做看會比較好,類似這樣
const OSS = require('ali-oss');

const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// 填写Bucket名称。
bucket: 'examplebucket'
});

async function get () {
try {
// 填写Object完整路径和本地文件的完整路径。Object完整路径中不能包含Bucket名称。
// 如果指定的本地文件存在会覆盖,不存在则新建。
// 如果未指定本地路径,则下载后的文件默认保存到示例程序所属项目对应本地路径中。
const result = await client.get('exampleobject.txt', 'D:\\localpath\\examplefile.txt');
console.log(result);
} catch (e) {
console.log(e);
}
}

get();
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答