Как правильно отправить клиенту документ с кодировкой base64 из express и начать загрузку? - PullRequest
0 голосов
/ 03 апреля 2020

У меня система с 3 приложениями.

  1. Клиент React для внешнего интерфейса
  2. Flask бэкэнд для API
  3. Узловое приложение для создания текстового документа (docx)

Бэкэнд flask приложение по существу действует как прокси для всех запросов API. Клиент отправит запрос конечной точке в бэкэнде, которая, в свою очередь, отправит запрос приложению express.

Приложение express генерирует Word do c следующим образом:

  // http://localhost:4000/word-export
  Packer.toBase64String(doc)
    .then(resp => {
      const fileContents = Buffer.from(resp, 'base64');
      res.send(fileContents);
    })
    .catch(error => res.send('error'));

Моя Flask логина конечной точки c выглядит следующим образом:

    // http://localhost:5000/api/export
    response = requests.get(
        'http://localhost:4000/word-export', headers=headers, json=json_data)

    response = make_response(response.content)

    response.headers.set('Content-Type', 'application/msword')
    # response.headers.set('Content-Disposition', 'attachment', filename='doc.docx')

    return response

Мне нужно иметь возможность загрузить этот документ с клиента. Как я могу это сделать, или как я должен декодировать строку base64? Все, что я пробовал до сих пор, провалилось.

1 Ответ

0 голосов
/ 03 апреля 2020

для отправки файла docx в браузер используйте метод toBlob() вместо метода toBase64String() и снова конвертируйте в буфер. Согласно do c в это местоположение

packer.toBlob(doc).then((blob) => {
    // saveAs from FileSaver will download the file
      saveAs(blob);
});

, и если вы создаете файл docx, тип mime должен быть application/vnd.openxmlformats-officedocument.wordprocessingml.document

, вы можете обратиться с здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...