【问题标题】:Meteor slingshot file upload to Google Cloud Storage internal server error流星弹弓文件上传到谷歌云存储内部服务器错误
【发布时间】:2015-05-27 11:28:37
【问题描述】:

我正在尝试使用edgee:slingshot 上传文件,但我有几个错误。我已经按照 github 页面中的描述做了所有事情。这是我在服务器上的设置:

Slingshot.GoogleCloud.directiveDefault.GoogleSecretKey = Assets.getText('google-cloud-service-key.pem');

Slingshot.createDirective("myFileUploads", Slingshot.GoogleCloud, {
    bucket: 'dossum-app',
    GoogleAccessId: "GOOGXXXX",
    GoogleSecretKey: "qZEsLZ/NiXXXXXXXXXXXXUW8NVjSvRb8SgdxXXXXX2",
    acl: 'bucket-owner-full-control',
    authorize: function() {
        if (!this.userId) {
            var message = 'Please login before posting file';
            throw new Meteor.Error('Login Required', message);
        }

        return true;
    },
    key: function(file) {
        var user = Meteor.users.findOne(this.userId);
        return user.username + '/' + file.name;
    }
});

这是 cors.json:

[{"origin": ["http://localhost:3000", "http://qnekt.zehinz.com"], "responseHeader": ["Origin", "Accept", "X-Requested-With", "Authorization", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token"], "method": ["GET", "HEAD", "DELETE", "PUT", "POST", "HEAD"], "maxAgeSeconds": 3600}]

如果我使用上述配置运行,我会收到此错误,但没有任何详细信息:{error: 500, reason: "Internal server error".... 我试图评论这一行://GoogleSecretKey:"qZEsLZ/NiEkXo641XHIUW8NVjSvRb8SgdxIyYcV2" 这次我收到这个错误:

{error: "Forbidden - 403", reason: "Failed to upload file to cloud storage", details: undefined ...

谁能指导我?

  1. 如果我使用 .pem 文件而不是 GoogleSecretKey,我应该在哪里获得 GoogleAccessId

  2. 文件上传和公开阅读的cors.json文件应该是什么?

【问题讨论】:

  • 有一个未发布的 slingshot 分支,其中包含一些更详细的 google 云存储文档,也许会有所帮助:github.com/CulturalMe/meteor-slingshot/tree/subpackages/…
  • @d_inevitable 是的,它有帮助。问题出在 GoogleSecretKey
  • 如果你已经解决了,请回答你自己的问题,以帮助有类似问题的人。

标签: meteor google-cloud-storage meteor-slingshot


【解决方案1】:

我在使用 edgee:slingshot 和 Google Cloud Storage 时遇到了麻烦。但是这个设置现在对我有用:

//server
Slingshot.GoogleCloud.directiveDefault.GoogleSecretKey = Assets.getText('google-cloud-service-key.pem');

Slingshot.createDirective('avatarUploader', Slingshot.GoogleCloud, {
    bucket: 'my_bucket',
    GoogleAccessId: 'xxxxxxxxxxxxxx@developer.gserviceaccount.com',
    acl: 'public-read',
    authorize: function() {
        if (!this.userId) {
            var message = 'Please login before posting file';
            throw new Meteor.Error('Login Required', message);
        }

        return true;
    },
    key: function(file) {
        var user = Meteor.users.findOne(this.userId);
        var ext = file.type.split('/')[1];
        return user.username + '/' + randomString(20) + '.' + ext;
    }
});

//CORS settings
[
  {
    "origin": ["*"],
    "responseHeader": ["*"],
    "method": ["GET", "POST", "PUT", "HEAD"],
    "maxAgeSeconds": 3000
  }
]

详情请看here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多