问题
By having these simple few lines of code I've got file saved on server.
router.post('/upload', upload.single('file'), function(req: Request, res: Response, next: Function) {
console.log(req.file);
res.json({ success: true, message: 'Uploaded' });
});
I want to encrypt the file before it is get saved.
Is there any way I can do that?
回答1:
- Multer provides a rich set of events which can give you better
control over your file uploads.
Therefore, the order of execution is:
- onParseStart
- onFileUploadStart/onFileUploadData...
- onFileUploadComplete
onParseEnd
- for encrypting we can use file-encryptor node module.
So,in your case your encrypting proccess should be in onFileUploadComplete by doing something like this:
var fs = require('fs');
var encryptor = require('file-encryptor');
var key = 'My Super Secret Key';
app.use(multer({
onFileUploadComplete: function (file) {
console.log(file.fieldname + ' uploaded to ' + file.path);
// Encrypt file.
encryptor.encryptFile(file, 'encryptedFile.dat', key, function(err) {
// Encryption complete.remove original file
fs.unlink(file);
});
}
}));
来源:https://stackoverflow.com/questions/35449630/how-to-encrypt-file-using-express-multer