自分のローカルファイルをS3バケットにアップロードするためのフォームを作成しようとしていますが、アップロードロジックの部分がどこに存在するかについて少し混乱しています。 POSTルートをきれいに保ち、別のファイルに格納されたAWSロジックを参照したいのですが、私は、ParamsレベルのBodyプロパティにどの値を使用するべきか、このモジュールをどのように参照するべきかについて少し混乱します完成したアップロードURLをデータベースプロパティのfileAttachment
行に設定すると、誰かが私を正しい方向に向けることができますか?ここでNodejs Amazon S3ファイルアップロード
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>
これを共有していただきありがとうございますが、多くの文書や質問と重複しているようには見えません。アクセスキーIDはどこで設定しますか? 'upload.array()'パラメータは何を表していますか?アップロードされたURLをデータベース 'fileAttachment'にどのように参照することができますか? – cphill
私の答えを更新しました。 –