我的服务器上有一个文件,而我的计算机上有另一个文件。我想要做的是一个简单的更新程序,它检查我的计算机的文件是否等于在服务器上传的文件。 (如果它相等,那么它还没有更新,如果它不相等则再下载)
我正在使用QNetworkAccessManager下载文件。有什么想法吗?
答案 0 :(得分:4)
您可以通过以下方式从文件生成校验和:
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();
对两个文件执行此操作(以某种方式从一台计算机获取签名)并比较结果。
答案 1 :(得分:3)
您可以计算文件的SHA-1校验和,然后比较两个校验和。如果它们相等,则文件具有相同的内容。
答案 2 :(得分:1)
您的服务器(WebService或普通的servlet / php)需要一些文件名(或ID或smth)作为参数并使用其校验和(SHA1,MD5)进行回复。
如果您的本地文件校验和与远程文件校验和不同 - 请下载它。