2017-08-11 77 views
1

我決定走S3路線來存儲圖像,而不是用Gridfs來做。但我仍然對MongoDB如何與Multer和S3集成感到困惑。如何將Multer和Multer-S3與MongoDB集成?

例如,可以說我擁有每個用戶的文檔集合。假定文檔本身不包含將被上傳到我的S3雲的配置文件圖片。

但是,當我在前端顯示用戶列表時,如何確保爲每個用戶顯示正確的配置文件圖片?

我正在查看multer-s3文檔,並且我注意到元數據設置了要上傳到S3的文件的名稱(我認爲?)。

var upload = multer({ 
    storage: multerS3({ 
    s3: s3, 
    bucket: 'some-bucket', 
    metadata: function (req, file, cb) { 
     cb(null, {fieldName: file.fieldname}); 
    }, 
    key: function (req, file, cb) { 
     cb(null, Date.now().toString()) 
    } 
    }) 
}) 

我在想也許這個問題的一個很好的解決方案是將每個文件上傳爲與將使用它的用戶相同的名稱。我可以修改元數據和關鍵功能,以便它們與上傳它們的用戶名稱相同嗎? cb究竟做了什麼,它的每個參數代表什麼?

回答

0

假設您有用戶名,您可以通過更改密鑰來命名文件。

key: function (req, file, cb) { 
     cb(null, username + ".jpg") 
} 

或者你可以把照片文件這樣的文件,文件夾內:

key: function (req, file, cb) { 
     cb(null, username + "/profile.jpg") 
} 

的/納入將允許您創建,並把圖像文件夾中。