首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从s3通过node expressjs提供静态网站?

如何从s3通过node expressjs提供静态网站?
EN

Stack Overflow用户
提问于 2016-10-26 20:14:30
回答 2查看 5K关注 0票数 10

目前我使用的是app.use(express.static('public'))和我的文件,它们位于我的节点js express app的公共文件夹中,并且运行良好。但是,我希望将这些文件(index.html等)存储在我的s3存储桶中(这样多个应用程序就可以使用这个网站)。我试过了

代码语言:javascript
复制
app.get('/', function(req, res) {
    res.sendfile('link-to-s3-file/index.html'); 
 });

却没有成功。

EN

回答 2

Stack Overflow用户

发布于 2016-10-26 21:02:40

我不会重复发明轮子。在npm上有一个相当新的、文档完整的中间件模块来解决这个问题

从文档中:

代码语言:javascript
复制
app.get('/media/*', s3Proxy({
  bucket: 'bucket_name',
  prefix: 'optional_s3_path_prefix',
  accessKeyId: 'aws_access_key_id',
  secretAccessKey: 'aws_secret_access_key',
  overrideCacheControl: 'max-age=100000'
}));
票数 13
EN

Stack Overflow用户

发布于 2018-07-26 05:01:26

我希望/foo与不同s3存储桶上的/foo.html相匹配。我使用以下方法来完成此操作:

代码语言:javascript
复制
app.get('/:thePath', function(req, res) {
    var key = "saved/" + req.params.thePath;
    if(key.indexOf(".html") === -1) {
        key = key + ".html";
    }

    s3.getObject({ Bucket: "just-read", Key: key })
   .on('httpHeaders', function (statusCode, headers) {
        res.set('Content-Length', headers['content-length']);
        res.set('Content-Type', "text/html");
        this.response.httpResponse.createUnbufferedStream()
            .pipe(res);
    })
    .send();
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40262009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档