PHPでは、 MD5_FILE()は、ファイルのMD5ハッシュ値を計算するための非常に便利な機能です。使用は非常に簡単です:
<Code> $ hash = md5_file( 'path/to/file.txt'); </code>これは、ファイルの整合性検証、キャッシュアイデンティティの生成などのシナリオで非常に実用的です。ただし、node.jsのMD5_File()と完全に同等の組み込み関数はありません。ただし、node.jsのコアモジュール暗号とFSモジュールの助けを借りて、同様の機能を手動で実装できます。
node.jsのcryptoモジュールは強力な暗号化機能を提供しますが、 FSモジュールでは、ストリームでファイルコンテンツを読み取ることができます。これら2つを組み合わせることで、ファイルの内容を読み取り、MD5値をリアルタイムで計算できます。
以下は実装コードです。
<code> const fs = require( 'fs'); const crypto = require( 'crypto');関数md5file(filepath){
新しい約束を返す((解決、拒否)=> {
const hash = crypto.createhash( 'md5');
const stream = fs.createreadstream(filepath);
stream.on('data', chunk => hash.update(chunk));
stream.on('end', () => resolve(hash.digest('hex')));
stream.on('error', reject);
});
}
//例を使用します
md5file( 'embles.txt')
.then(hash => {
console.log( 'md5:'、hash);
})
.catch(err => {
console.error( 'エラー読み取りファイル:'、err);
});
</code>
この関数は約束を返します。これは、ファイルが正常に読み取られてハッシュされたときに対応するMD5値を返します。
アップロードサービスを構築し、ユーザーがアップロードしたファイルがアップロードの前後に一貫しているかどうかを確認する必要があるとします。 MD5値を、アップロードする前に、サーバーで生成された値と比較できます。
<code> app.post( '/upload'、(req、res)=> {const uploadedfilepath = '/tmp/uploaded.file'; //ファイルをアップロードしたFilePathに保存したとします
md5file(uploadedfilepath).then(serverhash => {
const clienthash = req.body.md5;
if (serverHash === clientHash) {
res.send('一貫したファイル');
} else {
res.status(400).send('ファイル検証に失敗しました');
}
})。catch(()=> {
Res.Status(500).send( 'internal error');
});
});
</code>
完全な機能を達成するには、クライアントがアップロードされる前にファイルのMD5値を作成する必要もあります。ブラウザ側では、 SparkMD5やFileReader APIなどのライブラリを使用して、ファイルのハッシュ値を計算できます。
node.jsにはPHPでmd5_file()のショートカット関数はありませんが、暗号モジュールとFSモジュールを介して同様の機能を簡単に実装できます。ストリーミング処理を使用することにより、高性能ファイルの検証および処理サービスの構築に適した大きなファイルを処理するときに、メモリ効率を確保することもできます。