サーバーに 1 つのファイルがあり、コンピューターにもう 1 つのファイルがあります。私がやりたいことは、私のコンピューターのファイルがサーバーにアップロードされたものと等しいかどうかをチェックする単純なアップデーターです。(等しい場合は更新されていません。等しくない場合はダウンロードします)
QNetworkAccessManager を使用してファイルをダウンロードしています。何か案が?
サーバーに 1 つのファイルがあり、コンピューターにもう 1 つのファイルがあります。私がやりたいことは、私のコンピューターのファイルがサーバーにアップロードされたものと等しいかどうかをチェックする単純なアップデーターです。(等しい場合は更新されていません。等しくない場合はダウンロードします)
QNetworkAccessManager を使用してファイルをダウンロードしています。何か案が?
次の方法で、ファイルからチェックサムを生成できます。
QCryptographicHash hash( QCryptographicHash::Sha1 );
QFile file( fileName );
if ( file.open( QIODevice::ReadOnly ) ) {
hash.addData( file.readAll() );
} else {
// Handle "cannot open file" error
}
// Retrieve the SHA1 signature of the file
QByteArray sig = hash.result();
両方のファイルに対してこれを実行し (何らかの方法で一方のマシンから他方のマシンに署名を取得しながら)、結果を比較します。
ファイルのSHA-1チェックサムを計算し、2 つのチェックサムを比較できます。それらが等しい場合、ファイルの内容は同じです。
ファイル名 (または ID または smth) をパラメーターとして取り、そのチェックサム (SHA1、MD5) で応答するサーバー (WebService、または単純なサーブレット/php) が必要になります。
ローカル ファイルのチェックサムがリモートのものと異なる場合は、ダウンロードしてください。