PDA

View Full Version : Question on MIME multipart/form-data



dannycxh
2nd March 2010, 09:08
I want to use QNetworkAccessManager send a jpeg file to my local server, but I have no idea to figure out the problem , Could some one do me a favour? I am so appreciate!!!!!


QString fileName = "/home/test.jpg";
QFileInfo path(fileName);
QString openFilesPath = path.fileName();
QFile inputFile;
inputFile.setFileName(fileName);
inputFile.open(QIODevice::ReadOnly);

QString boundary,data,crlf,fileByteSize;
QByteArray dataToSend;
QNetworkAccessManager *manager =new QNetworkAccessManager();
boundary="7d44e178b0434";
crlf=0x0d;
crlf+=0x0a;

data=crlf+"--"+boundary+crlf; // start delimiter
data+="Content-Disposition: form-data; name=\"username\";"+crlf;
data+="Content-Type: text/plain; charset=US-ASCII"+crlf;
data+="Content-Transfer-Encoding:8bit"+crlf;
data+=crlf+"test"+crlf;
data+=crlf+"--"+boundary+crlf;
data+="Content-Disposition: form-data; name=\"pict\"; filename=\""+fileName+"\";"+crlf;
data+="Content-Type: image/jpeg;"+crlf;
data+="Content-Transfer-Encoding:8bit"+crlf;
data+=crlf+inputFile.readAll()+crlf;
data+="--"+boundary+"--"+crlf; // stop delimite
dataToSend.insert(0,data); // convert to byte array for request

QNetworkRequest request(QUrl("http://127.0.0.1/test/uploadimg.jsp"));
request.setRawHeader("Content-Type","multipart/form-data; boundary=7d44e178b0434");
request.setHeader(QNetworkRequest::ContentLengthHe ader,dataToSend.size());
reply=manager->post(request,dataToSend); // perform post request

connect(reply,SIGNAL(finished()),SLOT(slotdone())) ; // reply finished - close file