目前我使用的是app.use(express.static('public'))
和我的文件,它们位于我的节点js express app的公共文件夹中,并且运行良好。但是,我希望将这些文件(index.html等)存储在我的s3存储桶中(这样多个应用程序就可以使用这个网站)。我试过了
app.get('/', function(req, res) {
res.sendfile('link-to-s3-file/index.html');
});
却没有成功。
发布于 2016-10-26 21:02:40
我不会重复发明轮子。在npm上有一个相当新的、文档完整的中间件模块来解决这个问题
从文档中:
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'
}));
发布于 2018-07-26 05:01:26
我希望/foo
与不同s3存储桶上的/foo.html
相匹配。我使用以下方法来完成此操作:
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();
});
https://stackoverflow.com/questions/40262009
复制相似问题