2013-05-05 83 views
0

這是我在服務器上運行的代碼。我正在使用C++讀取一個.jpg localy文件,然後將它與SFML一起發佈到單個字符串中。由於內容長度與文件大小相同,因此該帖子顯然被服務器接收。但是,當寫入文件時,字符串似乎縮短爲只有276個字符。最後寫的字符是%,之後的字符應該是&(當在記事本++中打開文件時),因爲SFML不能以表單形式發佈文件,所以我必須這樣做。爲什麼在字符串肯定到達服務器時文件被切斷?PHP只將第一個276個字符寫入文件

$headers = apache_request_headers(); 

foreach ($headers as $header => $value) 
{ 
    if(strcmp(strtolower($header),"content-length")==0) 
    { 
     $length=intval($value); 
     echo $value; 
    } 
} 
$file=fopen("file".".txt","w"); 
fwrite($file,$_POST["file"],$length); 
fclose($file); 

替代PHP指數(也不起作用 - 沒有在發佈後沒有$ _FILES [ 「文件」]變量):http://pastebin.com/edP6VXCr

的C++代碼,我用它來發送:http://pastebin.com/uCaRe9X5

+0

請檢查'回聲$ length'得到了同樣的答案爲'回聲$ value'和發佈的C的修訂本++程序源碼。另外,我不確定你的意思是「無法在表單中發佈文件」。 – 2013-05-05 18:07:56

+0

所有三種長度都是相同的。我的意思是無法發佈文件:http://www.w3schools.com/php/php_file_upload.asp SFML顯然不能在提交內容時使用文件作爲字段。 – 2013-05-05 18:12:28

回答

0

$_FILES代替$_POST。另外,您應該使用move_uploaded_file()

編輯:進一步擴大下面的評論,請嘗試使用:

move_uploaded_file($_FILES["file"]["tmp_name"], '/somewhere/on/the/disk'); 
+0

我已經做了另一個文件,但使用文件,但SFML無法上傳文件,我也可以做到這一點,沒有捲曲我可以嗎? – 2013-05-05 18:17:36

+0

發佈PHP代碼:你應該使用類似'move_uploaded_file($ _ FILES [「file」] [「tmp_name」],'/ somewhere');'。如果您發佈了C++代碼,解決您的問題可能會更容易。是的,cURL很好,使用curl -X POST' – 2013-05-05 18:19:14

+0

我知道cURL,但是我想自己編寫它而不使用cURL,因爲它需要很多aditional dll文件。 這是打開圖像併發送它的部分: http://pastebin.com/uCaRe9X5 – 2013-05-05 18:25:32

相關問題