在PHP中使用CURL发布以“@”开头的文本数据

时间:2012-09-23 16:03:17

标签: php curl

我使用CURL在PHP中发布数据,如下所示:

curl_setopt($ch, CURLOPT_POSTFIELDS, $args);

其中$ args - 参数数组。

问题是其中一个参数的值以“@”开头。根据CURL文档,这意味着我将发送一个文件。在我的情况下,这不是真的。 因此,我收到以下错误消息:创建formpost数据失败。

有没有办法指定我想发送文件的时间,或者“@”只是一个常规字符,它是某个值的一部分?

谢谢, 颊

2 个答案:

答案 0 :(得分:2)

您可以使用百分比编码吗?那样你的'@'符号就是%40,而CURL也不会弄乱它们。我们通常对所有帖子字段进行百分比编码。

http://en.wikipedia.org/wiki/Percent-encoding

答案 1 :(得分:1)

从PHP 5.5开始,您可以设置CURLOPT_SAFE_UPLOAD选项以防止以" @"开头的字符串的文件上载行为。例如。

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);

PHP 5.5.0的默认值为false,从5.6.0

开始为true

来源:http://php.net/manual/en/function.curl-setopt.php