我遇到了使用Qt将.txt文件上传到我的java servlet服务器的问题。
我花了5天时间尝试了很多解决方案。但它们都没有奏效。有人可以帮助我吗?
问题是Qt代码可以正常工作。但是服务器没有收到来自Qt的httprequest的任何内容。
这是Qt中的一个解决方案:
QFile file("dataToSend.txt");
nam = new QNetworkAccessManager(this);
QObject::connect(nam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(finishedSlot(QNetworkReply*)));
QNetworkRequest r(QUrl("http://localhost:9999/server"));
QString bound="---------------------------723690991551375881941828858";
QByteArray data(QString("--"+bound+"\r\n").toAscii());
data += QString("--" + bound + "\r\n").toAscii();
data += "Content-Disposition: form-data; name=\"file\"; filename=\""+file.fileName()+"\"\r\n";
data += "Content-Type: text/plain\r\n\r\n";
file.open(QIODevice::ReadOnly);
data += file.readAll();
data += "\r\n";
data += QString("--" + bound + "\r\n").toAscii();
r.setRawHeader(QString("Content-Type").toAscii(),QString("multipart/form-data; boundary=" + bound).toAscii());
r.setRawHeader(QString("Content-Length").toAscii(), QString::number(data.length()).toAscii());
reply = nam->post(r,data);
reply=nam->get(r);
这是另一种解决方案,它既不会w:
nam = new QNetworkAccessManager(this);
QObject::connect(nam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(finishedSlot(QNetworkReply*)));
QFile *file=new QFile("dataToSend.txt");
QNetworkRequest request(QUrl("http://localhost:9999/server"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-streamd");
if(!file->open(QIODevice::ReadOnly)){
qDebug("%s\n",qPrintable("can't open the file!"));
return;
}
// post data to server
reply= nam->post(request,file);
file->setParent(reply);
reply=nam->get(request);
答案 0 :(得分:0)
你不能post()
向服务器提供某些内容,并且下面的一行有get()
期望查看该文件。
通常你必须发帖,等到post
完成,然后你可以看到修改..
here您可以使用很多链接来做正确的事情