我目前正在爲我的用戶實施文件/圖像上傳服務。我想在上傳到我的s3存儲區之前轉換這些圖像(調整大小/優化)。使用NodeJS Multer轉換上傳
目前我在做什麼:我前端使用多形式的(我認爲實際的實現並不重要這裏..)和我的後端的multer
和multer-s3
包。
在這裏,我的實施剝離了重要的部分。
// SETUP
var multer = require('multer');
var s3 = require('multer-s3');
var storage = s3({
dirname: 'user/uploads',
bucket: auth.aws.s3.bucket,
secretAccessKey: auth.aws.s3.secretAccessKey,
accessKeyId: auth.aws.s3.accessKeyId,
region: auth.aws.s3.region,
filename: function (req, file, cb) {
cb(null, Date.now());
}
});
var upload = multer({storage: storage}).single('img');
// ROUTE
module.exports = Router()
.post('/', function (req, res, next) {
upload(req, res, function (err) {
if (err) {
return res.status(401).json({err: '...'});
}
return res.json({err:null,url: '..'});
});
});
我想要做的是:在上傳圖像之前轉換圖像。我不確定是否需要在這裏使用multer/busboy,或者我可以用NodeJS來做(因此我也標記了NodeJS並表達了它)。
所以我的問題是:我可以在哪裏攔截上傳並將其上傳到我的S3存儲桶之前進行轉換?
嗯,你可以在一些臨時文件夾中保存文件上傳到S3之前?如果您不想保存文件,您可以在內存中執行此操作,這取決於圖像的大小,但此方法不適合較大的文件。 –
@RistoNovik我很可能可以做到這一點。但是這聽起來非常昂貴/不方便。 – Brettetete
您可以在將其發送到後端之前轉換前端上的圖像。 –