2015-02-09 56 views
1

我知道,我們可以在PHP中很容易地上傳文件捲曲:如何在PHP中設置cURL的「--upload-file」參數?

$c = curl_init(); 
curl_setopt($c, CURLOPT_VERBOSE, true); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($c, CURLOPT_HEADER, false); 
curl_setopt($c, CURLOPT_URL, 'http://.....'); 
curl_setopt($c, CURLOPT_POST, true); 
curl_setopt($c, CURLOPT_POSTFIELDS, array('file'=>'@/home/myFile.pdf')); 
echo curl_exec($c); 

我有一個Linux curl命令如下:

curl --location --upload-file /home/myFile.pdf http://... 

,在Linux命令外殼效果很好,但在PHP(使用我在問題開始時編寫的代碼)我無法將文件上傳到網址。

我想我必須找到一種方法來在PHP中設置cURL命令的「--upload-file」選項。

我該怎麼做?

+0

啓用詳細輸出,看看你得到任何錯誤:'curl_setopt($ C,CURLOPT_VERBOSE ,true);' – Cyclonecode 2015-02-09 13:58:36

+0

@Cyclone謝謝。我這樣做:) – 2015-02-09 14:30:32

回答

1

首先,改變方法放:

// curl_setopt($c, CURLOPT_POST, true); 
curl_setopt($c, CURLOPT_PUT, true); 

然後換POSTFIELDS到INFILE:

// curl_setopt($c, CURLOPT_POSTFIELDS, array('file'=>'@/home/myFile.pdf')); 
$fp = fopen("/home/myFile.pdf", "rb"); 
curl_setopt($ch, CURLOPT_INFILE, $fp); 
curl_setopt($ch, CURLOPT_INFILESIZE, filesize('/home/myFile.pdf')); 
+0

我加'curl_setopt($ c,CURLOPT_VERBOSE,真);'@Cyclone說。當我改變方法從發佈到PUT,服務器響應說:'400錯誤的請求:您的瀏覽器發送請求,這個服務器不明白' – 2015-02-09 14:33:49

+0

,但是當我使用post方法它說:'411長度要求',但我在頭文件中設置'Content-Length':| – 2015-02-09 14:35:59

+0

@alimzm - 是的,但您也可以將'CURLOPT_HEADER'設置爲false,將其更改爲'true'。 – Cyclonecode 2015-02-09 14:36:44