我使用 CURL 在 PHP 中发布数据,如下所示:
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
其中 $args - 参数数组。
问题是其中一个参数的值以“@”开头。根据 CURL 文档,这意味着我要发送一个文件。在我的情况下这是不正确的。结果,我收到以下错误消息:创建表单数据失败。
有没有办法指定何时我想发送文件或“@”只是一个常规字符,它是某个值的一部分?
谢谢, 吉娜
你能用百分比编码代替吗?这样你的 '@' 符号将是 %40 并且 CURL 不会弄乱它们。我们通常对所有帖子字段进行百分比编码。
从 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