如何解决获取 SignatureDoesNotMatch:使用 multers3 node.js 将图像上传到 DigitalOcean Spaces 时出现空错误
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",response) {
response.sendFile(__dirname + '/public/success.html');
});
app.get("/error",response) {
response.sendFile(__dirname + '/public/error.html');
});
app.post('/upload',response,next) {
upload(request,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 的数字海洋空间示例
解决方法
我遇到了同样的问题,唯一有帮助的是重置密钥
,我可以确认 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...
// --------------------------------------------------------
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。