Можно ли отправить файл из приложения Electron на сервер Express, указав путь?

#javascript #node.js #express #http #electron

#javascript #node.js #экспресс #http #electron

Вопрос:

Это то, что я пытаюсь сделать:

  1. Пользователь перетаскивает файл в Electron
  2. Electron использует скрипт python для его преобразования (child_process.exec)
  3. Преобразование создает файл в том же каталоге, что и исходный файл
  4. Поскольку я знаю путь (исходный файл, кроме другого расширения), файл загружается на сервер, который сохраняет его для будущего доступа.

Я застрял на шаге 4. Что бы я ни делал, я не могу получить преобразованный файл. Это то, что я пробовал:

   let bodyFormData = new FormData();
  bodyFormData.append('model', createReadStream(filePath));

  axios({
    method: 'post',
    url: 'my/path',
    data: bodyFormData,
    headers: {
      'Content-Type': `multipart/form-data; boundary=${bodyFormData._boundary}`
    }
  })
    .then(function (response) {
      //handle success
      console.log(response);
    })
    .catch(function (response) {
      //handle error
      console.log(response);
    });
  

И вот как выглядит запрос из express:

   body: { model: '[object Object]' },
  files: null,
  

Я не знаю, возможно ли это вообще. Если это не так, я был бы признателен за любые советы по другим способам достижения того, что я пытаюсь сделать. Надеюсь, моего объяснения было достаточно, заранее спасибо!

Ответ №1:

Мне удалось исправить это самостоятельно. Во-первых, да, можно читать файлы из файловой системы, если у вас есть соответствующие привилегии.

Все, что я сделал, это преобразовал поток файлов в blob перед отправкой, и это сработало. Я использовал этот потрясающий пакет npm под названием stream-to-blob, и он отлично справился с задачей.