nodejs将文件上传到s2 aws Amazon

时间:2019-03-02 20:22:40

标签: node.js amazon-s3

这是我当前的代码。这是行不通的。 我将图像发布到表单数据中。

我的问题是:

  1. 我如何在node.js中查看表单数据(尝试登录req.body,它是一个空对象)
  2. 代码中的“ demo.jpg”是什么意思?

NODEJS

var aws = require('aws-sdk');
const express = require('express');
const router = express.Router();
aws.config.update({
    "accessKeyId": "<MY_KEY>",               
    "secretAccessKey": "<MY_SECRET>"
});




router.post('/', (req, res, next) => {
    console.log(res.body)
    var s3 = new aws.S3();

    var params = {
        Bucket: "passwordapp",
        Key: 'aaaaaa',
        Expires: 60,
        ContentType: 'jpg'
    };

    s3.getSignedUrl('demo.jpg', params, function(err, data) {
        //console.log("err",err);

        if (err) {
            res.json(err)
        } else {
            res.json(data)
        }
    });
});


  module.exports = router;

enter image description here

1 个答案:

答案 0 :(得分:-1)

确定从这里得到解决方案:

https://stackoverflow.com/a/54402849/1230198

使用multer

这是我的工作代码:

const express = require('express');
const router = express.Router();

const AWS = require('aws-sdk');
const multer = require('multer');
const storage = multer.memoryStorage()
const upload = multer({storage: storage});

const s3Client = new AWS.S3({
    "accessKeyId": "<KEY>",               
    "secretAccessKey": "<SECRET>"
});

const uploadParams = {
         Bucket: 'passwordapp', 
         Key: '', // pass key
         Body: null, // pass file body
};



router.post('/', upload.single("image"),(req, res, next) => {

    const params = uploadParams;

    uploadParams.Key = req.file.originalname;
    uploadParams.Body = req.file.buffer;
    s3Client.upload(params, (err, data) => {
        if (err) {
            res.status(500).json({error:"Error -> " + err});
        }
        res.json({message: 'File uploaded successfully','filename': 
        req.file.originalname, 'location': data.Location});
    });




});


  module.exports = router;