ファイルをアップロードするために Ajax 経由でデータを送信するのに問題があります。フォームからデータを直接送信すると、次のコードで動作します。
var fs = require('fs');
var fstream;
var folder = 'public/images/tmp/';
var path;
var images = [];
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
if(filename){
if (!fs.existsSync(folder)) {
fs.mkdirSync(folder,0744);
}
path = folder+ filename;
fstream = fs.createWriteStream(path);
file.pipe(fstream);
} else {
path= undefined;
}
images.push(path);
res.send(images);
});
ファイルはサーバーの一時フォルダーに送信されます。しかし、JavaScript に画像を返す必要があるため、そのデータを使用して他のアクションを実行できます。
今、私が考えているオプションは次のとおりです。 1-「data.send()」を回避してフォームを結果ビューにリダイレクトする方法を見つける
$.ajax( {
url: '/media',
type: 'POST',
data: new FormData(document.getElementById('#myFormId')),
success: //do things,
error: //do other things
});
busboy で動作するようにデータを POST 関数に送信する必要があるか、ファイルをサーバーにコピーする別の方法があるかどうかはわかりません。
ありがとう。