2014-06-11 28 views
0

我正在使用以下代碼通過api上傳文件。 但我發現上傳後文件內容類型錯誤(僅爲26字節左右)。 內容類型將是$ data_string的長度。 我試圖將內容長度更改爲上傳文件的文件大小。 但之後,該API不工作。是我做錯了什麼編碼?通過PHP curl將文件上傳到api時的內容長度問題。

$data  = array("Content" => "file.wav"); //around 4mb 
$data_string = json_encode($data); 
$ch   = curl_init(); 

curl_setopt($ch, CURLOPT_URL, 'URL'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);       
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-type: audio/wav',                   
    'Content-Length: ' . strlen($data_string))                  
);      
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 

$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
$data  = curl_exec($ch); 

curl_close($ch); 

回答

0

$ data_string是由編碼的陣列,其由具有一對字符串,因此這將是不陣列文件的大小的大小JSON形成的字符串。如果你想找到文件的大小,我建議你使用filesize()函數。

http://www.php.net//manual/en/function.filesize.php

*還要檢查 「$用戶名:密碼$」,如果它是在正確的形式。