我有一個基本節點應用程序,用戶登錄並能夠查看存儲在應用程序目錄中的文件的鏈接。文件結構看起來像這樣。從節點訪問s3存儲桶
├──應用
├──公共
├──node_modules
├──安全(這裏存儲的文件)
├──.ebextensions
├──.elasticbeanstalk
├ ──的package.json
└──app.js
的secure/
目錄是我的所有文件都存儲(約350MB)。
這裏是在該目錄中href="/secure/folder/document.pdf"
我搬到了整個secure/
文件夾複製到S3存儲讓我申請下來的文件大小鏈接到一個文件的例子。
有沒有人有任何建議,讓我的節點應用程序訪問此存儲桶?
我對所有路由secure/
中間件來檢查,如果用戶通過驗證,那麼該鏈接不能被分發到未登錄用戶誰。
這是我在它的嘗試!
var AWS = require('aws-sdk'),
s3 = new AWS.S3({
region : 'example_region'
});
app.get('/secure/:endpoint',function(req,res){
var
Stream = s3.getObject({
Bucket: 'exampleBucket',
Key: 'secure/' + req.params.endpoint
}).createReadStream();
Stream.pipe(res);
});
我能夠訪問類似的鏈接,這href="/secure/userguide.pdf"
,但是當你開始要1個多層次深入到文件系統e.g href="/secure/foldar1/userguide.pdf"
它拋出一個404錯誤。
爲什麼不讓你的路由像這樣:app.get('/ secure /:folder /:endpoint',function(req,res){...}? –
感謝Kiet,問題是有些文件是3-在這種情況下,我建議你使用下面的路由,app.get('/ secure/*',function(())/(安全/文件夾1 /文件夾2 /文件夾3 /文件.pdf) – sebko
req,res){...},那麼每一個以/ secure /開始的請求都會附加到這個路由器上,並且你可以使用req.originalUrl來獲取路徑。 –