Chr*_*Ngo 1 javascript amazon-s3 amazon-web-services aws-lambda
我正在尝试将 excel 文件上传到 S3 并通过 signedURL 下载它。我注意到该对象以不同的文件类型而不是预期的 xlsx 类型返回,因此在本地不可读。
我有两个 lambda,一个用于上传对象,另一个用于检索 signedURL。
上传:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
获取签名网址:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
我猜该文件实际上并没有以其原始文件类型保存,而 S3 实际上只是将其转换为文本文件。也许我需要一个额外的参数或包来明确地将它保存为 Excel 文件。请让我知道你的想法!
您在参数中缺少 ContentType。我不确定这是否适合 excel,但提供正确的内容类型应该可以解决这个问题。我在上传图片时遇到了类似的问题。我忘了将 ContentType 设置为 image/jpeg
const params = {
Bucket: bucket,
Key: key,
ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Other possible options "xls" => "application/vnd.ms-excel", "xlsx" => "vnd.ms-excel",
| 归档时间: |
|
| 查看次数: |
2356 次 |
| 最近记录: |