我在使用 libCURL 时遇到了这种奇怪的行为。当我尝试通过在文件名的开头附加“@”来上传文件时(如 libCURL 的手册页中所述),而不是上传文件内容,libCURL 会发送文件名本身(以 @ 开头)。
这是在 Windows 2008 R2 上运行的,带有 xampp 版本 5.6.8,其中已编译 curl(curl 版本 7.40.0)。
这是相关的代码片段:
$post['pic'] = "@C:\\image.png";
$ret = curl_setopt( $ch, CURLOPT_POST, TRUE );
if (!$ret) die("curl_setopt CURLOPT_POST failed");
$ret = curl_setopt( $ch, CURLOPT_POSTFIELDS, $post );
if (!$ret) die("curl_setopt CURLOPT_POSTFIELDS failed");
$response = curl_exec( $ch );
此代码适用于 Linux,但不适用于 Windows Server 2008。
这是我得到的表单数据:
Content-Type: multipart/form-data; \\
boundary=------------------------c74a6af8b52d997a
--------------------------c74a6af8b52d997a
Content-Disposition: form-data; name="pic"
@C:\image.png
--------------------------c74a6af8b52d997a--
如您所见,我收到@C:\image.png
的是内容而不是内容。
有谁知道为什么 libCURL 不会上传文件内容?