У меня проблема в nodejs.Я надеюсь решить эту проблему.
Я использовал multer и грозный при загрузке файла.
, если я отправляю append [file, string, string], поэтому происходит ошибка, но изменяется порядок добавления append [string, file,строка] или [строка, строка, файл], затем успешная загрузка файла.
Я думаю, первый параметр - это файл в добавлении, поэтому возникает ошибка.
Это огромный источник.
const form = new formidable.IncomingForm();
var path = top_path;
form.encoding = 'utf-8';
form.uploadDir = './file';
form.multiples = true;
form.keepExtensions = true; //확장자 표시
var fields = [];
var files = [];
var fields_array = [];
var files_array = [];
form.on('field', function(field, value){
form.uploadDir = path;
fields.push([field, value]);
fields_array.push(value);
}).on('file', function(field, file){
files.push([field, file.name]);
files_array.push(file_name);
})
form.on('end', function(){
console.log('총 파일 업로드 갯수 ==', this.openedFiles.length);
console.log('---------<fields>---------');
for(var i = 0; i<fields_array.length; i++){
console.log('fields['+i+']: '+fields_array[i]);
}
console.log('---------<files>---------');
for(var i = 0; i<files_array.length; i++){
console.log('files['+i+']: '+files_array[i]);
}
console.log('---------<end>---------');
var trans_object ={
'field' : fields_array,
'file' : files_array
}
res.send(trans_object);
fields = [];
files = [];
fields_array = [];
files_array = [];
}).on('error', function(error){
console.error(error);
})
form.parse(req, function(err, field, file){
console.log('[parse()] error: '+err +', field : '+field+', file : '+file);
console.log('upload success..');
})
И это источник из нескольких источников.
var storage = multer.diskStorage({
destination: function (req, file, next) {
// next(null, './uploads')
var path = req.body.path;
next(null, path);
},
filename: function (req, file, next) {
var originalFilename = file.originalname.split(".");
var extension = originalFilename[1].toLowerCase();
var filename = originalFilename[0];
file_name = Date.now() +"_"+ filename + "." + extension; //save filename
next(null, file_name);
}
}),
upload = multer({
storage: storage,
limits:{fileSize: 1001024}
}),
fUpload = upload.fields([{
name: 'input_file',
maxCount: 10
}])
var file_upload = async () => {
return new Promise((resolve, reject) => {
fUpload(req, res, function (err) {
if (err) {
console.log(err.message);
resolve(err.message);
} else {
var file = file_name;
if(file_count > 0)file = file_arr;
var data = {
path:path,
filename : file
}
console.log(data);
resolve(data);
return true;
}
});
});
}
let uploader = async () =>{
let rtn_upload = await file_upload();
res.send(rtn_upload);
}
uploader();
если я использовал первый параметр в файле, а затем не удалось загрузить файл.
example
var form = new FormData();
form.append("input_file", $("input[name=input_file]")[0].files[0]);
form.append("path", $("#path").val());
form.append("filename", $("#filename").val());
Затем этот путьи имя файла в теле не определено в nodejs.
Но использовался первый параметр, кроме файла, затем файл успешной загрузки.
example *1024*
var form = new FormData();
form.append("path", $("#path").val());
form.append("filename", $("#filename").val());
form.append("input_file", $("input[name=input_file]")[0].files[0]);
Это изначально?или я решил эту проблему в коде?