5

好吧,我的服务器上有一个文件,而我的计算机上有另一个文件。我想做的是一个简单的更新程序,它检查我的计算机的文件是否等于服务器中上传的文件。(如果相等则未更新,如果不相等则下载)

我正在使用 QNetworkAccessManager 下载文件。任何的想法?

4

3 回答 3

5

您可以通过以下方式从文件生成校验和:

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();

对这两个文件执行此操作(同时以某种方式从一台机器获取签名到另一台机器)并比较结果。

于 2011-12-15T23:43:04.287 回答
3

您可以计算文件的SHA-1校验和,然后比较两个校验和。如果它们相等,则文件具有相同的内容。

于 2011-12-15T08:22:19.087 回答
1

您将需要在您的服务器(WebService 或普通 servlet/php)上使用文件名(或 ID 或 smth)作为参数并使用其校验和(SHA1、MD5)进行回复。

如果您的本地文件校验和与远程文件不同 - 下载它。

于 2011-12-15T08:24:43.617 回答