带有 aws 签名的大型 pdf 文件无法在浏览器中打开 url

Large pdf files are not opening in browser with aws signed url

我正在使用 NodeJS 将文件上传到 s3,并且在上传时为 pdf 设置了正确的 contentType。看起来像这样,

const params = {
  Bucket: "noob_bucket",
  Key: newFileName,
  Body: fs.createReadStream(path),
  ContentType: 'application/pdf',
  ACL: 'private',
};

现在的问题是,当我尝试在浏览器上使用签名 URL 显示 pdf 时,只有当文件大小大约小于 25MB 时,它才会在浏览器中打开,否则它只是下载文件。

谁能帮我解决这个问题。我也有大于 50MB 的文件。

请帮我解决这个问题。提前致谢

控制 PDF 文件是否显示或作为附件下载的 header 是 content-disposition header。如果你想让内容在浏览器中显示,应该是inline

您可以在上传文件时在参数中明确设置:

const params = {
  Bucket: "noob_bucket",
  Key: newFileName,
  Body: fs.createReadStream(path),
  ContentType: 'application/pdf',
  ContentDisposition: 'inline',
  ACL: 'private',
};

此外,当您请求预签名 url:

时,您可能希望设置它
const command = new GetObjectCommand({
    Bucket: 'noob_bucket',
    Key: newFileName,
    ResponseContentDisposition: 'inline',
    ResponseContentType: 'application/pdf',
});
const url = await getSignedUrl(s3Client, command, { expiresIn: 3600 });