【问题标题】:Getting SignatureDoesNotMatch: null error while uploading images to DigitalOcean Spaces using multers3 node.js获取 SignatureDoesNotMatch:使用 multers3 node.js 将图像上传到 DigitalOcean Spaces 时出现空错误
【发布时间】:2020-12-29 09:41:57
【问题描述】:
Error: code:'SignatureDoesNotMatch'
extendedRequestId:undefined
message:null
name:'SignatureDoesNotMatch'
region:null
// Load dependencies
const aws = require('aws-sdk');
const express = require('express');
const multer = require('multer');
const multerS3 = require('multer-s3');

const app = express();

// Set S3 endpoint to DigitalOcean Spaces
const spacesEndpoint = new aws.Endpoint('fra1.digitaloceanspaces.com');
const s3 = new aws.S3({
    endpoint: spacesEndpoint,
    accessKeyId: '*************',
    secretAccessKey: '**********************************'
});

// Change bucket property to your Space name
const upload = multer({
    storage: multerS3({
        s3: s3,
        bucket: 'bucket',
        acl: 'public-read',
        key: function (request, file, cb) {
            console.log(file);
            cb(null, file.originalname);
        }
    })
}).array('upload', 1);

// Views in public directory
app.use(express.static('public'));

// Main, error and success views
app.get('/', function (request, response) {
    response.sendFile(__dirname + '/public/index.html');
});

app.get("/success", function (request, response) {
    response.sendFile(__dirname + '/public/success.html');
});

app.get("/error", function (request, response) {
    response.sendFile(__dirname + '/public/error.html');
});

app.post('/upload', function (request, response, next) {
    upload(request, response, function (error) {
        if (error) {
            console.log(error);
            return response.redirect("/error");
        }
        console.log('File uploaded successfully.');
        response.redirect("/success");
    });
});

app.listen(3001, function () {
    console.log('Server listening on port 3001.');
});

试试这个blog 的数字海洋空间示例

【问题讨论】:

    标签: node.js digital-ocean multer spaces multer-s3


    【解决方案1】:

    我遇到了同样的问题,唯一有帮助的就是重置键

    【讨论】:

    • 这对我也有用
    【解决方案2】:

    我可以确认 Livius 的回答。我遇到过同样的问题。在没有对代码进行任何更改的情况下,我创建了新的访问密钥并开始工作。供您参考,这里我的设置代码被剪断:

    // --------------------------------------------------------
    ....
    var aws = require('aws-sdk');
    
    // --------- AWS SETUP -------------
    
    aws.config.update({
      accessKeyId: '..........',
      secretAccessKey: '.......',
      region: "eu-central-1",
      signatureVersion: 'v4',
      signatureCache: false
    });
    
    let s3 = new aws.S3();
    
    .. and so on...
    
    // --------------------------------------------------------
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-15
      • 2018-01-06
      • 2023-03-03
      • 2021-09-05
      • 2018-07-16
      • 1970-01-01
      • 2019-11-15
      • 2015-10-08
      相关资源
      最近更新 更多