html - AWS S3 - 允许公众查看 HTML 文件

标签 html node.js amazon-web-services amazon-s3 permissions

我希望允许公共(public)用户在其浏览器上查看位于 AWS S3 存储桶中的 HTML 文件。这些 HTML 文件通过 node.js 创建并上传到我的 S3 存储桶,并生成一个链接到该文件的 URL。

我正在使用这种方法上传 HTML 文件:

s3.upload({
    Bucket: bucket,
    Key: "HTMLFiles/file.HTML",
    Body: fileStream,
    ACL: 'public-read'
}, function (err, data) {
    if (err) {
        console.log("Error: ", err);
    }
    if (data) {
        console.log("Success: ", data.Location);
    }
}).on('httpUploadProgress', event => {
    console.log(`Uploaded ${event.loaded} out of ${event.total}`);
});

当脚本运行时,生成的 URL 看起来像这样:

https://bucket-name.s3.region.amazonaws.com/HTMLFiles/file.html

(显然这只是一个示例 URL 而不是实际 URL)

当用户转到此 URL 时,浏览器不会查看 HTML 文件,而是下载文件。

如何指定此文件是要在浏览器上加载和查看,而不是下载?

最佳答案

这是因为缺少内容类型,所以浏览器不知道您的文件应该被解释为 HTML。

请在传递给s3.upload的参数中添加ContentType: 'text/html'

另请参阅 Upload Image into S3 bucket using Api Gateway, Lambda funnction 中给出的解释和链接

关于html - AWS S3 - 允许公众查看 HTML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55856135/

相关文章:

javascript - 这是使用 AngularJS 获取数据到 <li><a href> 的错误吗?

node.js - "You may need an appropriate loader for this file type", webpack 无法解析 angular2 文件

node.js - 错误!安装 vue-cli 时编码 EPERM

r - 如何使用Shiny服务器在本地计算机上对R Shiny应用程序进行Docker化?

amazon-web-services - 无法在 AWS 上设置 HashiCorp Vault

amazon-web-services - lambda 更新函数代码中的写操作超时

html - 悬停时带有列表的菜单按钮和嵌套菜单

html - 防止元素在 Chrome 中跳来跳去

html - Angular Material 表背景颜色

node.js - 将 dotenv 路径与 JEST 一起使用