我正在尝试使用Sails JS从表单上传多个文件。 我不确定如何在发布表单时获取多个文件。收到文件后,我会迭代它以将其上传到AWS的S3。
单上传对我有用,但不是多个。 这里是上传项目的github链接。 https://github.com/psudeep/sailsFileUpload/
module.exports = {
upload: function (request, response) {
request.file('file').upload(function (err, file ) {
//console.log(file.length);
if(_.size(file) >= 0) {
file = _.first(file);
//console.log(file);
// let file_type = _.split(file.type, '/', 2);
// let file_ext = file_type[1];
// let new_file_name = file_name + "." +file_ext;
let new_file_name = "Test.jpg";
let originalFilePath = file.fd;
//S3 upload service working for single upload - this function will be in loop for multiple files
S3UploadService.upload_file(originalFilePath,new_file_name, function (err, result) {
if(err) {
response.redirect("/upload?success=false");
} else {
return response.status(200).send({success: true,message:"Successfully uploaded", data: result});
}
});
}
});
}
}
==========================表格在下面================== ===========
<form name="upload" method="post" action="/upload" enctype="multipart/form-data">
<input type="file" class="input03" name="file[]"><br/>
<input type="file" class="input03" name="file[]"><br/>
<input type="file" class="input03" name="file[]"><br/><br/>
<input type="submit" name="submit" value="Upload">
</form>
是否有人可以帮助了解如何在表单后获取多个帖子? 你可以从回购中拉出来,然后在那里提交。
提前致谢!!
答案 0 :(得分:0)
要理解它,请尝试userdb $1 set uid=5000 gid=5000 home=/var/mail/$1 mail=/var/mail/$1 <<EOF
userdbpw -md5 | userdb $1 set systempw
$2
$2
EOF
(我建议重命名sails.log(file)
您会发现,当有多个文件时,您会有一系列文件。
然后遍历此数组,例如使用request.file('file').upload(function (err, files)
并为每个文件执行所需操作。
您的HTML存在错误。您需要为每个文件提供单独的索引,如:
Array.forEach
现在应该可以了。
答案 1 :(得分:0)
在模板文件中,请执行以下操作。
<form method="POST" action="/upload" enctype="multipart/form-data">
<div class="field">
<label for="image">Image Upload</label>
<input type="text" name="file_name" id="name">
<input type="file" name="file" id="file1" multiple/>
</div>
<input type="submit" class="btn" value="Save">
</form>
在控制器中执行以下操作。我刚刚使用Math.Random()函数为每个文件指定了不同的名称。
request.file('file').upload(function (err, uploadedFiles) {
//console.log(file);
var data = [];
async.each(uploadedFiles,
function (uploadedFile, callback) {
S3UploadService.upload_file(uploadedFile.fd, file_name + "_"+Math.random(), function (err, result) {
data.push(result);
callback(err, result);
});
}
, function (err) {
// if any of the saves produced an error, err would equal that error
if (err) {
console.log(err);
} else {
console.log(data);
return response.status(200).send({success: false, message: "failed to upload", data: data});
}
});
});