简体   繁体   中英

using multer to post files into Digital Ocean Space

Trying to post local files to Digital Ocean Space

My post request body is:

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

These files are located locally to where this API is running/

In the JS file i have config

// 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);

And a route to post

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

Can't figure out how to post from an object these two images into the Digital Ocean space

There are plenty of tutorial on how to from a FORM browser user can post multiple images, but I got the files localy and I want to post it via script.

It can be done using aws sdk putObject API. This works for me.

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

      }

     });

     });

##Include this code in an API if you want to send file path as request body

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM