S3 Загрузка файла Excel и загрузка его через SignedURL - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь загрузить файл Excel в S3 и загрузить его с использованием подписанногоURL. Я заметил, что объект возвращается в другом типе файла вместо ожидаемого типа xlsx и, следовательно, не читается локально.

У меня есть две лямбды, одна для загрузки объекта и другая для получения the signURL.

Загрузить:

async function () => {
  const s3 = new aws.S3({ signatureVersion: 'v4' })
  const params = {
    Bucket: bucket,
    Key: key
  }

  try {
    const signedURL = await s3.getSignedUrl('getObject', params)
    return response(200, signedURL)
  } catch (err) {
    console.log(JSON.stringify(err))
    return response(400, err)
  }
}

GetSignedURL:

async function () => {
  const s3 = new aws.S3({ signatureVersion: 'v4' })
  const params = {
     Bucket: bucket,
     Key: key
  }

  try {
     const signedURL = await s3.getSignedUrl('putObject', params)
     return response(200, { signedURL, key })
  } catch (err) {
    return response(400, err)
  }
}

Я предполагаю, что файл фактически не сохраняется с исходным типом файла и S3 фактически просто конвертирует его в текстовый файл. Может быть, мне нужен дополнительный параметр или пакет, чтобы явно сохранить его как файл Excel. Пожалуйста, дайте мне знать ваши мысли!

1 Ответ

3 голосов
/ 06 февраля 2020

Вам не хватает ContentType в параметрах. Я не уверен, подходит ли этот вариант для Excel, но предоставление правильного типа контента должно решить проблему. У меня была похожая проблема при загрузке изображений. Я забыл установить ContentType для изображения / JPEG

const params = {
    Bucket: bucket,
    Key: key,
    ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  }
Other possible options 
"xls"       => "application/vnd.ms-excel",
"xlsx"      => "vnd.ms-excel",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...