2015-06-20 14 views
2

我想使用PHP和Curl來執行發佈請求。 這是我怎麼設置我的帖子參數:如何在發佈以@開頭的字符串時提出錯誤提示?

curl_setopt($ch,CURLOPT_POSTFIELDS,array('name'=> $name)); 

當$名字符串恰好包含一開始我碰到下面的錯誤@字符。

[8192] curl_setopt():該@filename API的文件上傳 的使用已被棄用。請使用CURLFile類上,而不是線 **在文件***

我不想發送任何文件,我只是想後的字符串。我怎樣才能做到這一點?我需要對它進行編碼嗎?

這是一個錯誤?我臨時解決了這個問題,通過使用http_build_query準備的字符串傳遞我的發佈數據。

這會導致Curl發送數據應用程序/ x-www-form-urlencoded,現在可以,但是如果不是?我需要傳遞數據嗎?

回答

1

如果您收到該消息,則表示您正在使用PHP 5.5(這是引入CURLFile類時的版本)。

在相同的版本中,他們引入了curl optionCURLOPT_SAFE_UPLOAD(它在PHP 5.5上具有默認值FALSE)。

所有你需要做的是補充:

curl_setopt(CURLOPT_SAFE_UPLOAD, TRUE); 

和錯誤應該消失。

documentation的摘錄:

CURLOPT_SAFE_UPLOAD

TRUE禁用支持,爲@前綴上傳文件CURLOPT_POSTFIELDS,這意味着開始與@值可以安全地傳遞作爲領域。可以使用CURLFile代替上傳。

在PHP 5.5.0中增加了FALSE作爲默認值。 PHP 5.6.0將默認值更改爲TRUE

+0

完美謝謝! –

相關問題