使用multer将文件发布到数字海洋空间

时间:2018-11-11 20:17:53

标签: javascript express digital-ocean multer

尝试将本地文件发布到Digital Ocean Space

我的帖子请求正文为:

[ 'http://localhost:8090/d/3534352009.png',
  'http://localhost:8090/d/3534352009-600x600.png' ]

这些文件位于此API运行所在的本地/

在JS文件中,我有配置

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

发布路线

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");
    });
});

无法弄清楚如何将两个图像从一个物体发布到数字海洋空间中

有很多关于如何从FORM浏览器发送用户图像的教程,但是我的文件是本地文件,我想通过脚本发布。

1 个答案:

答案 0 :(得分:0)

可以使用aws sdk putObject API来完成。这对我有用。

const aws = require('aws-sdk');
var fs =  require('fs');

const spacesEndpoint = new aws.Endpoint('sgp1.digitaloceanspaces.com');
const spaces = new aws.S3({
endpoint: spacesEndpoint,
accessKeyId: 'spaces_key',
secretAccessKey: 'spaces_secret'
  });

  fs.readFile('file_path', function (err, data) {
  if (err) { throw err; }


  var params = {Bucket: 'bucket_name', Key:'file_name', Body: data };

  spaces.putObject(params, function(err, data) {

     if (err) {

         console.log(err)

     } else {

         console.log("Successfully uploaded data to DO speaces");

      }

     });

     });

##如果要将文件路径作为请求正文发送,请在API中包含此代码