Dans PHP, md5_file () est une fonction très pratique pour calculer la valeur de hachage MD5 d'un fichier. Il est très simple à utiliser:
<code> $ hash = md5_file ('path / to / file.txt'); </code>Ceci est très pratique dans des scénarios tels que la vérification de l'intégrité des fichiers, la génération d'identité de cache, etc. Cependant, il n'y a pas de fonction intégrée qui est complètement équivalente à md5_file () dans node.js. Cependant, nous pouvons implémenter manuellement des fonctions similaires à l'aide du module de module de base de Node.js et du module FS .
Le module crypto dans Node.js fournit des capacités de chiffrement puissantes, tandis que le module FS nous permet de lire le contenu des fichiers dans un flux. En combinant ces deux, nous pouvons lire le contenu du fichier et calculer sa valeur MD5 en temps réel.
Ce qui suit est le code d'implémentation:
<code> const fs = require ('fs'); const Crypto = require ('crypto'); fonction md5file (filepath) {
retourner la nouvelle promesse ((résoudre, rejeter) => {
const hash = crypto.createhash ('md5');
const stream = fs.creareAdStream (filepath);
stream.on('data', chunk => hash.update(chunk));
stream.on('end', () => resolve(hash.digest('hex')));
stream.on('error', reject);
});
}
// Utilisez l'exemple
md5file ('example.txt')
.Then (hash => {
Console.log ('MD5:', Hash);
})
.Catch (err => {
Console.Error ('Fichier de lecture d'erreur:', err);
});
</code>
Cette fonction renvoie une promesse, qui renvoie la valeur MD5 correspondante lorsque le fichier est lu avec succès et haché.
Supposons que vous ayez construit un service de téléchargement et que vous deviez vérifier si le fichier téléchargé par l'utilisateur est cohérent avant et après le téléchargement. Vous pouvez comparer la valeur MD5 avant de télécharger avec la valeur générée sur le serveur:
<code> app.post ('/ upload', (req, res) => {const uploadedFilePath = '/tmp/uploaded.file'; // Supposons que vous ayez enregistré le fichier en téléchargement
md5file (uploadFilePath) .Then (serverhash => {
const ClientHash = req.body.md5;
if (serverHash === clientHash) {
res.send('Fichier cohérent');
} else {
res.status(400).send('La vérification du fichier a échoué');
}
}). Catch (() => {
res.status (500) .Send («Erreur interne»);
});
});
</code>
Pour atteindre une fonctionnalité complète, vous devrez peut-être également créer la valeur MD5 du fichier avant les téléchargements du client. Du côté du navigateur, vous pouvez utiliser une bibliothèque comme SparkMD5 et l'API FileReader pour calculer la valeur de hachage du fichier.
Bien que Node.js n'ait pas la fonction de raccourci de md5_file () dans PHP, nous pouvons facilement implémenter des fonctions similaires via les modules Crypto et FS . En utilisant le traitement en streaming, nous pouvons également assurer l'efficacité de la mémoire lors du traitement des fichiers volumineux, ce qui convient à la création de services de vérification et de traitement de fichiers haute performance.