Télécharger le fichier avec la méthode POST sur Qt4

Je suis à la recherche d'une base de code des échantillons de la façon de télécharger des fichiers vers le serveur avec la méthode HTTP POST sur l'intervalle Qt.

Mon tâche: j'ai simple Qt programme et j'ai besoin de sélectionner un fichier image à partir de l'hôte local et le télécharger sur le serveur. La sélection de la partie et l'interface graphique est simple et je l'ai déjà fait, mais avec POST le téléchargement, je suis confus. En outre, je dois dire, qu'il n'y a pas d'autorisation de téléchargement de fichiers.

Si quelqu'un est déjà à la recherche sur ce sujet?

PS: la raison pour laquelle je demande, et pas de codage mon auto est le temps, j'ai besoin d'obtenir cette méthode rapide.

Merci à tous les succès des solutions de mon côté sera posté ici pour les autres.

AJOUTÉ: Voici mon code qui ne fonctionne pas encore. Site de téléchargement situé ici.

void    CDialog::on_uploadButton_clicked() {
QFileInfo fileInfo(absPathLineEdit->text());
if (!fileInfo.exists()) {
QMessageBox::information(this, 
tr("Information"), 
tr("File doesn't exists! Please, select another image."));
return;
}
file = new QFile(fileInfo.filePath());
if (!file->open(QIODevice::ReadOnly)) {
QMessageBox::information(this,
tr("Information"),
tr("Unable to open file for reading!"));
return;
}
QString host = "http://data.cod.ru";
QUrl url(host);
QHttp::ConnectionMode mode = QHttp::ConnectionModeHttp;
http->setHost(url.host(), mode, (url.port() == -1) ? 80 : url.port());
QHttpRequestHeader header("POST", "/", 1, 1);
header.setValue("Host", "data.cod.ru");
header.setValue("Content-type", "multipart/form-data, boundary=AaB03x");
header.setValue("Cache-Control", "no-cache");
header.setValue("Accept", "*/*");
QByteArray bytes(fileInfo.filePath().toUtf8());
QByteArray totalBytes;
totalBytes.append("--AaB03x\r\n");
totalBytes.append("Content-Disposition: form-data; name=\"email\"\r\n");
totalBytes.append("\r\n");
totalBytes.append("[email protected]\r\n");
totalBytes.append("--AaB03x\r\n");
totalBytes.append("Content-Disposition: form-data; name=\"photo\"; filename=\"" + bytes+ "\"\r\n");
totalBytes.append("Content-Transfer-Encoding: binary\r\n\r\n");
totalBytes.append(file->readAll());
totalBytes.append("\r\n");
totalBytes.append("--AaB03x--");
header.setContentLength(totalBytes.length());
httpRequestAborted = false;
httpGetId = http->request(header, totalBytes);
file->close();
}

et de lire la réponse de la fonction ci-dessous:

void    CDialog::httpRequestFinished(int requestId, bool error) {
if (requestId != httpGetId)
return;
if (httpRequestAborted) {
if (file) {
file->close();
//         file->remove();
//         delete file;
file = 0;
}
return;
}
if (requestId != httpGetId)
return;
file->close();
if (error) {
//     file->remove();
QMessageBox::information(this, tr("HTTP"),
tr("Download failed: %1.")
.arg(http->errorString()));
} else {
QByteArray data = http->readAll();
QFile *dataFile = new QFile("answer.txt");
dataFile->open(QIODevice::WriteOnly | QIODevice::Text);
dataFile->write(data);
dataFile->flush();
dataFile->close();
}
// delete file;
file = 0;
}

OriginalL'auteur mosg | 2010-04-13