【问题标题】:Check if a file equals to other检查文件是否等于其他文件
【发布时间】:2011-12-15 08:18:26
【问题描述】:

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

我正在使用 QNetworkAccessManager 下载文件。有什么想法吗?

【问题讨论】:

    标签: file qt qnetworkaccessmanager


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 好吧,我一直在查看 QFile,但我无法弄清楚返回数据的内容。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-30
        • 2021-02-10
        • 1970-01-01
        • 2016-06-12
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        相关资源
        最近更新 更多