使用multers3 node.js将图像上载到DigitalOcean Spaces时获取SignatureDesNotMatch:null错误
在数字海洋空间示例中尝试此操作时,我遇到了相同的问题,唯一有帮助的是重置键,我可以确认Livius的答案。我也有同样的问题。没有对代码进行任何更改,我创建了新的访问密钥,它开始工作。供您参考,我的设置代码如下:使用multers3 node.js将图像上载到DigitalOcean Spaces时获取SignatureDesNotMatch:null错误,node.js,digital-ocean,multer,spaces,multer-s3,Node.js,Digital Ocean,Multer,Spaces,Multer S3,在数字海洋空间示例中尝试此操作时,我遇到了相同的问题,唯一有帮助的是重置键,我可以确认Livius的答案。我也有同样的问题。没有对代码进行任何更改,我创建了新的访问密钥,它开始工作。供您参考,我的设置代码如下: // Load dependencies const aws = require('aws-sdk'); const express = require('express'); const multer = require('multer'); const multerS3 = requ
// 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.');
});
// 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.');
});
// --------------------------------------------------------
....
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...
// --------------------------------------------------------