Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 使用aws-sdk和Node / Express将文件上传到S3大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我失去了我所做的错误,这里是我所拥有的:

HTML

<html>
<body>
    <form method="POST" action="/upload" enctype="multipart/form-data">
        <div class="field">
            <label for="image">Image Upload</label>
            <input type="file" name="image" id="image">
        </div>
        <input type="submit" class="btn" value="Save">
    </form>
</body>
</html>

Port 5000是我的Node.js服务器端口.

在这个例子中,我使用POST /上传,它工作正常.

@H_261_9@module.exports = function(app,models) { var fs = require('fs'); var AWS = require('aws-sdk'); var accessKeyId = process.env.AWS_ACCESS_KEY || "xxxxxx"; var secretAccessKey = process.env.AWS_SECRET_KEY || "+xxxxxx+B+xxxxxxx"; AWs.config.update({ accessKeyId: accessKeyId,secretAccessKey: secretAccessKey }); var s3 = new AWs.S3(); app.post('/upload',function(req,res){ var params = { Bucket: 'makersquest',Key: 'mykey1234.png',Body: "Hello" }; s3.putObject(params,function (perr,pres) { if (perr) { console.log("Error uploading data: ",perr); } else { console.log("successfully uploaded data to myBucket/myKey"); } }); }); }

现在我想发布我发帖的文件,这是出现问题的地方.

@H_261_9@module.exports = function(app,res){ var path = req.files.image.path; fs.readFile(path,function(err,file_buffer){ var params = { Bucket: 'makersquest',Body: file_buffer }; s3.putObject(params,pres) { if (perr) { console.log("Error uploading data: ",perr); } else { console.log("successfully uploaded data to myBucket/myKey"); } }); }); }); }

我得到的错误是:

事实上文件完全是空的.

我假设我错过了很明显的东西,但我似乎找不到.

解决方法@H_403_43@
您将需要像multer这样的东西来处理多部分上传.
这是一个使用aws-sdk将您的文件上传到s3的示例.

var multer = require('multer');
var AWS = require('aws-sdk');

var accessKeyId =  process.env.AWS_ACCESS_KEY || "xxxxxx";
var secretAccessKey = process.env.AWS_SECRET_KEY || "+xxxxxx+B+xxxxxxx";

AWs.config.update({
    accessKeyId: accessKeyId,secretAccessKey: secretAccessKey
});

var s3 = new AWs.S3();

app.use(multer({ // https://github.com/expressjs/multer
  dest: './public/uploads/',limits : { fileSize:100000 },rename: function (fieldname,fileName) {
    return filename.replace(/\W+/g,'-').toLowerCase();
  },onFileUploadData: function (file,data,req,res) {
    // file : { fieldname,originalname,name,encoding,mimetype,path,extension,size,truncated,buffer }
    var params = {
      Bucket: 'makersquest',Key: file.name,Body: data
    };

    s3.putObject(params,pres) {
      if (perr) {
        console.log("Error uploading data: ",perr);
      } else {
        console.log("successfully uploaded data to myBucket/myKey");
      }
    });
  }
}));

app.post('/upload',res){
    if(req.files.image !== undefined){ // `image` is the field name from your form
        res.redirect("/uploads"); // success
    }else{
        res.send("error,no file chosen");
    }
});

大佬总结

以上是大佬教程为你收集整理的node.js – 使用aws-sdk和Node / Express将文件上传到S3全部内容,希望文章能够帮你解决node.js – 使用aws-sdk和Node / Express将文件上传到S3所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。