Nodejs Amazon S3文件上传

cphill

我正在尝试创建一个将本地文件上传到S3存储桶的表单,但是我对上传逻辑的某些部分应该存在的位置有些困惑。我想保持POST路由整洁,并引用存放在单独文件中的AWS逻辑,但是对于应该为params级别的Body属性使用哪个值以及如何引用此模块,我有些困惑在该fileAttachment上将完整的上载URL设置为我的数据库属性时谁能指出我正确的方向?

这是我的aws-s3.js文件:

module.exports = function() {

var path = require('path');
var async = require('async');
var fs = require('fs');
var AWS = require('aws-sdk');
var config = require(path.resolve(__dirname, '..', '..','./config/config.js'));

AWS.config.region = config.region;

var s3 = new AWS.S3({params: {Bucket: config.awsBucket}});

var params = {Key: config.awsAccessKeyId, Body: req.body.fileAttachment};

s3.upload(params, function(err, data){
    if (err) {
        console.log("Error uploading data: ", err);
    } else {
        console.log("Successfully uploaded data to " + config.awsBucket + " /myKey");

    }
});

return s3;

};

这是我的路线:

appRoutes.route('/create/file')

    .get(function(req, res){
        models.DiscoverySource.findAll({
            where: {
                organizationId: req.user.organizationId
            }, attributes: ['discoverySource']
        }).then(function(discoverySource){
            res.render('pages/app/file-create.hbs',{
                discoverySource: discoverySource
            });
        });

    })



    .post(function(req, res){
        models.File.create({
            discovery: req.body.discovery,
            discoverySource: req.body.discoverySource,
            fileAttachment: 
            userId: req.user.user_id        
        }).then(function(){
            res.redirect('/app');
        });
    });

形式:

<form action="/app/create/file" method="post">
                <div class="form-header">
                    <label for="data-discovery-source">Discovery Source:</label>
                    <select name="discoverySource">
                        {{#each discoverySource}}
                        <option value="{{this.discoverySource}}">{{this.discoverySource}}</option>
                        {{/each}}
                    </select>
                    <label for="data-discovery">Discovery:</label>
                    <textarea id="discovery-text-field" name="discovery"></textarea>
                    <label for="report-link">File Attachment:</label>
                    <input type="file" name="fileAttachment">
                </div>
                <button type="submit" id="create-button">Create File</button>
            </form>
塔尔·阿维萨(Tal Avissar)

您可以尝试使用multer-s3模块。

它允许您将配置为storaage的文件上传到AWS。

该代码使用aws-sdk模块,有关其配置的更多信息,请参见此处

这是我的代码示例:

它使用带有Node.js的JavaScript的推荐的Amazon AWS开发工具包(SDK),还使用multer express中间件来上传文件。

var aws = require('aws-sdk')
var express = require('express')
var multer = require('multer')
var multerS3 = require('multer-s3')

var app = express()
var s3 = new aws.S3({ {accessKeyId: 'akid', secretAccessKey: 'secret'}) 
//this can also be configured in config file and through code



var upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'some-bucket',
    key: function (req, file, cb) {
      cb(null, Date.now().toString())
    }
  })
})

//the upload.array -means that you can load multiple files(max 3) named photos maximum 3,  the resulting AWS full path urls will be returned in req.files 
app.post('/upload', upload.array('photos', 3), function(req, res, next) {
  //reference results that can be stored in database for example in req.files
  res.send('Successfully uploaded ' + req.files.length + ' files!')
})

此代码还使用multer npm模块。有关其配置可能性的更多信息,例如:单个,任何upload.array,字段均可在此处找到

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用NodeJS将文件上传到Amazon S3

来自分类Dev

使用NodeJS和S3FS / multiparty将文件上传到Amazon S3

来自分类Dev

带有jQuery Ajax请求的CORS Amazon S3文件上传

来自分类Dev

Seahorse :: Client :: NetworkingError使用Rails上传Amazon S3文件

来自分类Dev

在nodejs中切换本地文件系统和Amazon S3文件系统的最佳方法是什么?

来自分类Dev

NodeJS文件上传到Amazon S3存储映射到数据库

来自分类Dev

Amazon S3文件从Android下载

来自分类Dev

Amazon S3文件从Android下载

来自分类常见问题

从客户端浏览器直接上传Amazon S3文件-私钥披露

来自分类Dev

成功将Amazon s3文件上传到存储桶后不会重定向

来自分类Dev

如何使用nodejs在Amazon s3上上传图像并将其公开

来自分类Dev

Django Tweepy无法访问Amazon S3文件

来自分类Dev

如何使用Node.js / Angular删除Amazon S3文件

来自分类Dev

您用于Amazon S3文件的URL有什么区别吗?

来自分类Dev

Amazon s3文件下载“ TypeError:预期的字符串或类似字节的对象”

来自分类Dev

更改内容分发后,Amazon S3文件为空

来自分类Dev

如何使用Knox将文件从NodeJS流传输到Amazon S3?

来自分类Dev

通过NodeJS服务器从Amazon S3传递文件而不公开S3 URL?

来自分类Dev

将文件上传到Amazon S3

来自分类Dev

Amazon S3低级API上传大文件

来自分类Dev

如何取消上传到Amazon S3的文件?

来自分类Dev

将文件从iOS上传到Amazon S3

来自分类Dev

Amazon S3 Java SDK多个文件上传

来自分类Dev

使用PHP SDK在Amazon S3上上传文件

来自分类Dev

使用PHP SDK在Amazon S3上上传文件

来自分类Dev

将文件从iOS上传到Amazon S3

来自分类Dev

上传文件Amazon S3预签名发布

来自分类Dev

将Blob文件上传到Amazon s3

来自分类Dev

将文件上传到Amazon S3

Related 相关文章

热门标签

归档