Экспорт файла Docx с размещением контента с использованием функции AWS Lambda - PullRequest
2 голосов
/ 06 ноября 2019

Я пишу обработчик как лямбда-функцию AWS, которая должна обернуть содержимое в файл docx. Я использую Content-Disposition в заголовках ответов, чтобы достичь цели. Ниже приведен код, который я написал до сих пор:

//Process Array Buffer and extract the plain content out of it
export const extractContent = async (data: Buffer) => {
  return new Promise((resolve, reject) => 
    textract.fromBufferWithMime(
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
      data,
      { preserveLineBreaks: true },
      (err, content) => {
        if (err) {
          reject(err);
        } else {
          resolve(content);
        }
      }
    )
  );
};

export const handlerName = async (
  event: APIGatewayProxyEvent
): Promise<APIGatewayProxyResult> => {
  if (event.body === null) {
    return ErrorResponse;
  }
  const result = await class.func(JSON.parse(event.body)); //returns an array buffer object
  if (result instanceof Error) {
    return ErrorResponse;
  }
  const content = await extractContent(result.data)
          .then(res => res)
          .catch(err => err);
  const headers = {
    "Access-Control-Allow-Origin": "*",
    "Strict-Transport-Security": "'max-age=31536000'",
    "Access-Control-Expose-Headers": "Content-Disposition",
    "Content-Disposition": attachment; filename=fn.docx; filename*=UTF-8''fn.docx,
    "Content-Type": "application/vnd.ms-word.document" 
  };
  return {
    body: content,
    headers,
    statusCode: 200,
  };
};

Теперь в APIGatewayResponse может быть возвращена только строка;следовательно, я не могу вернуть объект байта |поток |буфер вместо. Я могу загрузить файл DOCX, но он не открывается в MS-Word;Я всегда получаю подробную ошибку, что либо файл поврежден, либо какая-то часть неверна или отсутствует.

Я уже пробовал закодированную строку base64, но все еще не смог получить желаемое. Пожалуйста, предложите решение для этого.

Я пишу обработчик в машинописном узле, используя инфраструктуру SLS.

...