3

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

curl_setopt($ch, CURLOPT_POSTFIELDS, $args);

其中 $args - 参数数组。

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

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

谢谢, 吉娜

4

2 回答 2

3

你能用百分比编码代替吗?这样你的 '@' 符号将是 %40 并且 CURL 不会弄乱它们。我们通常对所有帖子字段进行百分比编码。

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

于 2012-09-24T14:42:29.023 回答
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

于 2014-10-03T13:38:31.897 回答