2011-05-11 45 views
0

我想使用此代码上传可执行文件到服务器:QNetworkAccessManager:上传可执行文件到Apache服务器

QFileDialog dialog(this); 
    dialog.setDirectory(QDir::home()); 
    QStringList fileNames = QFileDialog::getOpenFileNames(this,tr("Open File")); 
    if(fileNames.count() == 1) 
    { 
     QFileInfo fi(fileNames.at(0)); 

    } 

文件的路径是可变的文件名的内容和我提取文件名fileNames.at(0)的路径。 如何上传文件.. 我与此代码尝试,但文件不会被上传:

QByteArray postData; 

postData.append(path); 

QString url ="http://localhost/upload.php"; 
//type header 
req.setHeader(QNetworkRequest::ContentTypeHeader,"multipart/form-data"); 
req.setUrl(url); 

manager=new QNetworkAccessManager(this); 
reply=manager->post(req,postData); 

... 任何帮助,将不胜感激..

回答

0

我已阅读上面的线,我用这段代码尝试,但问题remains..uploading失败:

file=new QFile(path); 
file->open(QIODevice::ReadOnly); 
postData.append(file->readAll()); 

QString url ="http://localhost/uploadFile.php"; 
//type header 
req.setHeader(QNetworkRequest::ContentTypeHeader,"application/octet-stream"); 

req.setUrl(url); 

manager=new QNetworkAccessManager(this); 


reply=manager->post(req,postData); 
connect(manager,SIGNAL(finished(QNetworkReply*)),this,  SLOT(replyFinished(QNetworkReply*))); 

}

//////php file/////// 

// The software package name 
$fileName = trim($_POST['fileName']); 

// Make directory 
mkdir("files/$fileName"); 

// Upload file 
move_uploaded_file ($_FILES['upload'] ['temp_name'], "files/$fileName/{$_FILES['uploadFile'] ['name']}") 
+0

又是怎么回事更大的文件。你正在阅读...让我们说一次400MB的文件到内存中。您只需传递QIODevice即可发布,因此QNetworkAccessManager将在需要将更多数据放入套接字时读取它。 – 2011-05-16 12:00:24