我想從php腳本下載* .exe文件並執行它。使用C++和Qt下載二進制文件
當我下載文件後,我可以'執行它了。當我查看文件時,其中有很多問號。
PHP腳本:
header('Content-Description: File Transfer');
header('Content-Type: application/x-download');
header('Content-Disposition: attachment; filename='.basename($file_name));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file_name));
ob_clean();
flush();
readfile($file_name);
exit;
C++:
QFile offline_ip_adress_calculator(QDir::currentPath() + "/offline_ip_adress_calculator.exe");
//Check if the File exists and clear its content
if(!offline_ip_adress_calculator.open(QFile::ReadWrite | QIODevice::Truncate))
{
msgBox.critical(this, "I/O error", "Can't open offline_ip_adress_calculator.exe for update");
return;
}
QDataStream text_stream(&offline_ip_adress_calculator);
while(reply->size() > 0)
{
QByteArray replystring = reply->read(2048);
text_stream << replystring;
}
offline_ip_adress_calculator.close();
的答覆是 「QNetworkReply」
哇,太簡單了。它的工作原理:) – user2357505
你是如何選擇緩衝區爲2048?如果文件大於2018字節會發生什麼情況? –
@MuhammetAliAsan 2048在計算機方面是一個不錯的數字(2的倍數)。如果有更多的數據要讀取,它只需要兩個(或更多)迭代來讀取/寫入所有數據。 –