Как загрузить BLOB-объект с помощью Multer? - PullRequest
0 голосов
/ 05 октября 2018

Я следил за этим видео , чтобы узнать, как использовать Multer для загрузки файлов.

Затем я реализовал функцию загрузки изображений в одном из моих приложений Node.js.

Теперь я хотел бы использовать Multer для загрузки содержимого большого двоичного объекта, содержащего аудиоданные.Какой путь?Я уже немного попробовал, следуя тому, что узнал, но у меня уже есть некоторые проблемы:

  1. Сейчас я работаю со звуковыми данными вместо графических данных.
  2. У меня нет поляимя, которое нужно указать в качестве аргумента для multer ({storage: storage}). single (...); вызов функции.

Надеюсь, у кого-то есть опыт (использование Multer) предоставит некоторые рекомендации по этому вопросу.

Для справки, вот мой код для нажатия кнопки загрузки:

uploadVceRcd.onclick = e => {
    var reader = new FileReader();
    reader.onload = function(event) {
        var fd = {};
        fd["fname"] = "VoiceRecord_"+Date.now()+".opus";
        fd["data"] = event.target.result;
        $.ajax({
          type: 'POST',
          url: 'VoiceUpLoad',
          id: document.getElementById('sentID').innerText,
          data: fd,
          dataType: 'text'
        }).done(function(data) {
          console.log('uploadAudio - Done !');
          console.log(data);
        });
    };
    reader.readAsDataURL(blob);
}

А вот мой код для обработкисоответствующий маршрут VoiceUpLoad внутри index.js:

app.post('/VoiceUpLoad', function (req, res) {
  upload(req, res, function (err) {
    if (err) {
      if (err instanceof multer.MulterError) {
        // A Multer error occurred when uploading.
        console.log('A Multer error occurred when uploading. !!!');
      } else {
        // An unknown error occurred when uploading.
        console.log('A unknown error occurred when uploading. !!!');
        console.log(err);
      }
    } else {
      // Everything looks fine.
      console.log('All seems OOKK !!!');
      console.log(req.file);

      if (req.file == undefined) {
        console.log('req.file == undefined!!!');
      } else {
        console.log('SHOULD BE OOKK !!!');

        .......
      }
    }
  });
});

Когда я запускаю этот код, я получаю в журналах следующее:

... app[web.1]: All seems OOKK !!!
... app[web.1]: undefined
... app[web.1]: req.file == undefined!!!

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете использовать следующий код для загрузки аудиофайла,

reader.onload = function(event) {
    var formData = new FormData();
    formData.append('fname', "VoiceRecord_"+ Date.now() + ".opus")
    formData.append('data', event.target.result)
    $.ajax({
        type: 'POST',
        url: 'some/path',
        data: formData,
        contentType: false,
        cache: false,
        processData: false,
    }).done(function(data) {
      console.log('uploadAudio - Done !');
      console.log(data);
    });
});

Пожалуйста, попробуйте это, я объясню, если он работает.

...