Проверьте, равен ли файл другому - PullRequest
3 голосов
/ 15 декабря 2011

Ну, у меня есть один файл на моем сервере и другой на моем компьютере.То, что я хочу сделать, - это простой инструмент обновления, который проверяет, совпадает ли файл моего компьютера с файлом, загруженным на сервер.(Если оно равно, значит, оно не было обновлено, если оно не равно, тогда загрузите)

Я использую QNetworkAccessManager для загрузки файлов.Есть идеи?

Ответы [ 3 ]

4 голосов
/ 16 декабря 2011

Вы можете сгенерировать контрольную сумму из файла следующим образом:

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

Сделайте это для обоих файлов (получая при этом подпись от одного компьютера к другому) и сравните результаты.

3 голосов
/ 15 декабря 2011

Вы можете вычислить контрольную сумму файла SHA-1 и сравнить две контрольные суммы.Если они равны, файлы имеют одинаковое содержимое.

1 голос
/ 15 декабря 2011

Вам понадобится что-то на вашем сервере (WebService или простой сервлет / php), в котором в качестве параметра будет указано имя файла (или ID или что-то другое) и ответ его контрольной суммой (SHA1, MD5).

Если ваша локальная контрольная сумма файла отличается от удаленной - загрузите ее.

...