0
upload()
機能のerror
ステートメントがトリガーされていますが、フォームの送信が処理されなくなり、my ifステートメントのエラーの半分に示されているようにリダイレクトが送信されません。 .post
ルートには、ルートメソッドの残りの部分を実行させるルートがありません。Expressjsマルチパートのアップロードに失敗しましたが、POSTが終了しました
アップロード変数定義の不正なファイル拡張形式は、エラーをスローするものです。
POST:
.post(function(req, res){
var s3FilePath = [];
upload(req, res, function(err){
if(err){
req.flash('error', err);
res.redirect(req.get('referer'));
}
var uploadedFiles = req.files;
//Configure Uploaded S3 File Path strings based on environment for use in DB
for (var prop in uploadedFiles){
console.log(uploadedFiles[prop].key);
if (app.get('env') === 'production' || app.get('env') === 'staging'){
s3FilePath = 'https://files.test-site.com/' + uploadedFiles[prop].key;
} else {
s3FilePath.push(uploadedFiles[prop].location);
}
}
models.Blog.create({
title: req.body.title,
type: req.body.type,
userId: req.user.userId
}).then(function(blog){
var files = _.map(s3FilePath, function (file) {
return {
file: file,
blogId: blog.blogId
};
});
return models.BlogFile.bulkCreate(files);
}).then(function(){
req.flash('info', 'Blog was successfully created.');
res.redirect('/app');
});
});
});
upload
変数定義:
var upload = multer({
storage: multerS3({
s3: s3,
bucket: options.Bucket,
contentType: multerS3.AUTO_CONTENT_TYPE,
acl: options.ACL,
key: function(req, file, cb){
var fileNameFormatted = file.originalname.replace(/\s+/g, '-').toLowerCase();
cb(null, req.user.organizationId + '/' + uploadDate + '/' + fileNameFormatted);
}
}),
fileFilter: function(req, file, cb){
if(!file.originalname.match(/\.(jpg|jpeg|png|gif|csv|xls|xlsb|xlsm|xlsx)$/)){
return cb('One of your selected files is not supported', false);
}
cb(null, true);
}
}).array('fileUpload', 5);
それは私のために働いた – Remario
それは完全に働いた。詳細な説明をいただきありがとうございます – cphill