Я использую Qt's QNetworkAccessManager для загрузки файла из места (в настоящее время это локальный компьютер, но в будущем он будет HTTP-сервером) и временно сохраняет его в файле TEMP (linux убунт). Проблема, которую я обнаружил, заключается в том, что файл (исполняемый файл) поврежден в процессе: когда я пытаюсь запустить файл как исполняемый файл, он возвращает классическую ошибку проблемной кросс-компиляции.Исполняемый файл как-то поврежден при копировании
Теперь это интересно, потому что файл является исполняемым для встроенного устройства Linux - я загружаю исполняемый файл в свой TEMP, поэтому я могу отправить его позже на устройство. Когда это происходит (с помощью FileZilla), хотя, появляется сообщение об ошибке:
./re8k_interface-tgt: line 1: syntax error: unexpected word (expecting ")")
Теперь я знаю, что исходный файл в порядке, скопировав его на устройство и запустить его, так что я знаю, что что-то делать с процессом копирования файла, либо при загрузке, либо при записи в объект QFile. Вот как я это делаю сейчас:
//Call to download
QUrl ulrTemp("//" + downloadUrls[downloadStep].arg(ui->sbID->text()));
ulrTemp.setScheme("file");
qDebug() << "Downloading from" << ulrTemp;
poReply = downloadNetworkManager->get(QNetworkRequest(ulrTemp));
connect(poReply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(slotTransferProgress(qint64,qint64)));
connect(poReply,SIGNAL(error(QNetworkReply::NetworkError)),this,SLOT(slotTransferError(QNetworkReply::NetworkError)));
//When finished
QByteArray downloadedData;
downloadedData = reply->readAll();
reply->deleteLater();
poReply->deleteLater();
static const QString tempFilePath = QDir::tempPath();
QFile file(tempFilePath + "/" + downloadNames[downloadStep]);
if (!file.open(QFile::WriteOnly | QFile::Truncate))
{
qDebug() << "Failure opening temp file to write: " << file.fileName();
return;
}
QDataStream stream(&file);
stream << downloadedData;
file.close();
P.s .: Я понимаю, о необходимости установки разрешений,
Скопированная размер файла точно совпадает с оригиналом. Итак, где проблема, которую я не вижу?
Вы также убедитесь, что содержимое соответствует, а не только размер? Действительно ли они разные? 'md5' или что-то в этом роде расскажет вам легко. – Steve