私はmulterを使用して、Expressルート上のアップロードファイルを処理しています。私は、格納のためにbase64文字列にバッファを書きたいと思います。メモリ内のファイル(複数可)を維持することになっているmemoryStorage
オプションまたはnot specifying any optionsを、使用してディスクへの書き込みを行わないときただし、オブジェクト上buffer
プロパティは常にnull
です:memoryStorageを使用している場合、Multerバッファはnullです
var multer = require('multer');
var storage = multer.memoryStorage();
. . .
app.post('/', multer({ storage: storage }).single('photo'), function(req, res) {
var photo = req.files.photo || req.file || null;
if (photo) {
console.log(photo);
var data = photo.buffer.toString('base64');
. . .
}
});
// Result of console.log
{
fieldname: 'photo',
originalname: 'me.jpg',
name: '71a7e8c6aa262063574ddca9538c5174.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
path: 'C:\\Users\\alsoi\\AppData\\Local\\Temp\\71a7e8c6aa262063574ddca9538c5174.jpg',
extension: 'jpg',
size: 16563,
truncated: false,
buffer: null
}
私はJPGを試してみました、 PNGとテキストファイルが含まれますが、結果は常に同じです。
私はthis issueに出くわしましたが、決して解決されませんでした。私は何とかムルターを誤って構成していますか?または、それをディスクに保存してから、それをbase64に非同期で読み込むだけですか?理想的には、multerが作成するはずのバッファを使用したいだけです。
私は開発用にWindows 5.x上でノード5.11.1、Express 4、およびマルチター1.2.0を使用しています。
「エラー:送信後にヘッダーを設定できません。」というメッセージが表示されます。 – Brandon
これは奇妙です。あなたの応答が何らかの理由で2回送信されているようです。応答をuploadFileメソッドの外側に送りますが、もう一度その内部に送りますか?また、file.bufferはそこにありますか? – VtoCorleone