0
我想上傳一個.avi文件到FTP服務器QFtp:爲什麼這個調用QFtp.put導致崩潰?
void MyFTP::recordingDone(QString &fileName){
remainingFiles.push_back(new QString(fileName));
commands[qftp.connectToHost(globalProperties.ftpServer)] = "connect to host";
commands[qftp.login(globalProperties.ftpUsername,globalProperties.ftpPassword)] = "login";
commands[qftp.cd("myapp")] = "cd myapp";
commands[qftp.cd("Videos")] = "cd videos";
QDir().cd(globalProperties.videoStorageLocation);
qDebug()<<"Opening "<<fileName<<endl;
if(QFile::exists(fileName)){
qDebug()<<"File exists"<<endl;
}
else{
qDebug()<<"File does not exist"<<endl;
}
QFile file(fileName);
qDebug()<<"putting"<<endl;
qftp.put(&file,fileName);
qDebug()<<"Closing ftp"<<endl;
qftp.close();
}
我連接到命令完成信號和使用的插槽調試輸出信息:
void TrusionFTP::ftpCommandDone(int id, bool error){
qDebug()<<"command: "<<commands[id]<<": "<<error;
if(error){
qDebug()<<qftp.errorString()<<endl;
if (qftp.hasPendingCommands()){
qDebug()<<"Pending commands"<<endl;
}
}
}
這裏是在飛機墜毀前的輸出:
Opening "2012-Mar-06-12-19-57.avi"
File exists
putting
Closing ftp
command: "connect to host" : false
command: "login" : false
command: "cd trusion" : false
command: "cd videos" : false
崩潰也會發生,如果我不關閉FTP連接。該文件永遠不會進入服務器。
這也適用於Qt的其他語言綁定,特別是垃圾收集語言,例如。 PyQt for Python。需要保留對「QFile」或任何其他正在使用的「QIODevice」對象的引用。 – Archimedix 2014-09-18 13:25:40