qt – 青春部落,流年似水 http://www.youthtribe.com 青春是一场远行,总记不起来时的路。 Thu, 30 Jun 2022 09:20:52 +0000 zh-CN hourly 1 https://wordpress.org/?v=6.1.6 qt – 青春部落,流年似水 http://www.youthtribe.com/archives/1960 Sun, 06 Feb 2022 07:47:57 +0000 http://www.youthtribe.com/?p=1960 直接上代码吧,qt得到文件md5的值应该还是比较常用到的一个功能。

QString ThreadDownload::getFileMd5(QString filename)
{
    QFile theFile(filename);
    if(!theFile.open(QIODevice::ReadOnly)){
        return "failed";
    }
    QByteArray ba = QCryptographicHash::hash(theFile.readAll(), QCryptographicHash::Md5);
    theFile.close();
    return QString(ba.toHex());

}
]]>
qt – 青春部落,流年似水 http://www.youthtribe.com/archives/1869 http://www.youthtribe.com/archives/1869#respond Thu, 08 Apr 2021 09:52:20 +0000 http://www.youthtribe.com/?p=1869 上传文件

QNetworkAccessManager manager;
QUrl url;
/* 设置通讯协议 */
url.setScheme("ftp");    
/* 设置用户名 */  
url.setUserName("root");  
/* 设置密码 */ 
url.setPassword("123456"); 
/* 设置主机,也可以是域名 */
url.setHost("127.0.0.1");
/* 设置端口号,一般为21 */  
url.setPort(21);         
/* 设置路径 */ 
url.setPath("/tmp/hello.png"); 

/* 装载本地文件 */
QFile file("/Desktop/hello.png"); 
file.open(QIODevice::ReadOnly);
/* 读取本地文件数据 */
QByteArray data = file.readAll(); 
file.close();

QNetworkRequest request(url);
/* 上传数据,上传成功后会在远端创建/tmp/hello.png文件 */
QNetworkReply* reply = manager.put(request, data); 

QEventLoop eventLoop; 
QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
/* 进入等待,但事件循环依然进行 */
eventLoop.exec(); 

if (reply->error() != QNetworkReply::NoError) {
    qDebug() << "Error: " << reply->errorString();
}

下载文件

QNetworkAccessManager manager;
QUrl url;
/* 设置通讯协议 */
url.setScheme("ftp");      
/* 设置用户名 */
url.setUserName("root");   
/* 设置密码 */
url.setPassword("123456"); 
/* 设置主机,也可以是域名 */
url.setHost("127.0.0.1");  
/* 设置端口号,一般为21 */
url.setPort(21);           
/* 设置路径 */
url.setPath("/tmp/test.txt"); 

QNetworkRequest request(url);
/* 执行Get请求 */
QNetworkReply* reply = manager.get(request); 

QEventLoop eventLoop;
QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
/* 进入等待,但事件循环依然进行 */
eventLoop.exec(); 

if (reply->error() == QNetworkReply::NoError) {
    /* 创建本地文件 */
    QFile file("test.txt"); 
    file.open(QIODevice::WriteOnly);
    /* 写入文件 */
    file.write(reply->readAll()); 
    file.close();
}
else {
    qDebug() << "Error: " << reply->errorString();
}

总结

  • 上传文件:配置url->加载数据->put操作
  • 下载文件:配置url->get操作->获取数据保存到文件
  • 如服务端没有身份验证,客户端可以省略用户名和密码操作。
  • https://zhuanlan.zhihu.com/p/92496797

    ]]>
    http://www.youthtribe.com/archives/1869/feed 0