0
module.exports.upload = function (req, res) {
  fileName = path.basename(req.query.fileName);
  var fileExtn = path.extname(req.query.fileName);
  console.log("fileName " + fileName);
  console.log("fileExtn " + fileExtn);

  var fileCheckResponse = FileCheck(req, res);  // FileCheck method containing Busboy code
  console.log("file check response =" + fileCheckResponse);
}

function FileCheck(req, res) {
var dataSize;
  var busboy = new Busboy({ headers: req.headers });
    busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
      file.on("data", function (data) {
        dataSize=data.length;
      console.log("File [" + fieldname + "] got " + data.length + " bytes");
      console.log("the upload file data ===== " + data);

      })
    });
    busboy.on('finish', function() {
      console.log('Upload complete');
      return dataSize;
    });
   return  req.pipe(busboy);
}`

ここで、アップロード メソッドから、Busboy コードが存在する FileCheck 関数を呼び出しています。最初に FileCheck 関数をデバッグしてチェックインします ( busboy.on('file', function(fieldname, file, filename, encoding, mimetype) )その後、内部に入らず、別の行にヒットします( busboy.on('finish', function()) 、応答オブジェクトはアップロードメソッドに戻ります。 fileCheckResponse で datalengtht を期待していますが、それを含まないオブジェクトを取得しています。もう一度デバッグを続けると、FileCheck 関数に戻り、今度は ( file.on("data", function (data)) にヒットし、私が書いたようにコンソールにデータを出力しますが、アップロード メソッドに応答が返されません。

ここでも私の質問と目標は datalength を応答として取得することですが、初めてオブジェクトを応答として取得し、2 回目はポインタがアップロード メソッドに戻りません。

4

1 に答える 1