npm multer
を使用してファイルをアップロードしようとしています。問題は、multerがエラーではなく応答を返さないということです。私はファイルアップロードのためのアプリケーション全体のための共通の機能を作成しようとしました。 私はすべての(777)私のフォルダへのアクセス権も持っています。NPM Multerが応答を返さない
私のサンプルコードはです。
var uploadFile = require('../../utilities/common').uploadFile;
exports.uploadVehicle = function (req, res) {
console.log('\nUploading File');
console.log(dirPath.vehicleFarm);
uploadFile(dirPath.vehicleFarm, 'csvFile', function (err) {
console.log('\tError:');
console.log(err);
if (err)
return res.status(err.status || 400).json({code: err.status || 400, message: err.message || 'Unable to process request.'});
var data = req.body;
console.log(data.csvFile);
res.status(200).json({status: 200, message: 'File saved successfully'});
});
};
共通ファイル内uploadFile
機能は次のように述べています。
var multer = require('multer');
var path = require('path');
var fs = require('fs');
var filePath = path.resolve(__dirname, '..');
var storage = function (inputDir, fieldName) {
console.log('Input from storage to path - ' + inputDir);
console.log(filePath + '/uploads/' + inputDir);
return multer.diskStorage({
destination: function (req, file, cb) {
cb(null, filePath + '/uploads/' + inputDir);
},
filename : function (req, file, cb) {
var dateTimeStamp = Date.now();
req.body[fieldName] = file.fieldname + '-' + dateTimeStamp + '.' + file.originalname.split('.')[file.originalname.split('.').length - 1];
console.log(req.body[fieldName]);
cb(null, req.body[fieldName]);
}
});
};
exports.uploadFile = function (inputDir, fieldName) {
return multer({storage: storage(inputDir, fieldName)}).single(fieldName);
};
入力パスがさえフォルダにもパスが存在しても有効である - 私が間違っている/home/sony/Desktop/node/all/db/uploads/tempCSV/vehicleFarm/
?ファイルのアップロードにも失敗した場合はどうすれば追跡できますか?
私が提供したソリューションに同意します。私はあなたが言及した形式で同じ機能を事前に書いていました。しかし、私が修正するのは、私は動的なディレクトリパスとファイル名(現在のバージョン)を渡し、動作を停止します。私のフロントエンドコードはあなたが書いたものと同じです。 – Sankalp
@Sankalpは、動的パスで動作するように変更されていますが、エラーはありますか?ファイルが正しいパスに保存しようとしていますか?別のオプションは2つ(またはあなたが望む数だけ)異なる 'diskStorage()'を各パスに1つずつ持つことです。次にapp.post()の中であなたが使いたいものを制御します。 – Tom
私はすべてを持っている、フォルダが存在する場合でもパスは有効です。しかし、彼らはマルター機能からの応答はありません。エラーでもありません。これが私がデバッグできない理由です。 'diskstorage'についてどのようなオプションが言及されているのかを確認しましょう。しかし、私は、マルター関数からの応答がエラーか真かのいずれかを期待しています。 – Sankalp