我正在尝试通过POST将文件从Qt(C ++)应用程序上传到我的网络服务器,运行LAMP堆栈。
似乎一切顺利,但出于某种原因,脚本的$_POST
和$_FILES
数组完全为空。我尝试使用普通的HTML表单上传相同的文件,它的工作原理。
以下是我在Qt程序中构建请求的方法:
request.setUrl(ServerAddress);
request.setHeader(request.ContentTypeHeader, "application/x-www-form-urlencoded");
reply = nam.post(request, file);
PHP:
<?php
var_dump($_POST);
var_dump($_FILES);
?>
request
是QNetworkRequest
,reply
是QNetworkReply
,nam
是QNetworkAccessManager,file
是开放的QFile
1}}我的文件。
请求发送正常,我甚至试图通过使用Wireshark以某种方式查看请求是否搞砸了。这是输出:
POST /upload.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 8
Connection: Keep-Alive
Accept-Encoding: gzip, deflate
Accept-Language: en-US,*
User-Agent: Mozilla/5.0
Host: mysite.com
My data!HTTP/1.1 200 OK
Date: Wed, 03 Jul 2013 15:16:37 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.4.17RC1
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 36
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
array(0) {
}
array(0) {
}
这是一个非常小的文本文件,只包含“'我的数据!”。我只是不明白PHP脚本没有看到文件的原因。我出错的任何想法?