如何设置--上传文件";PHP中cURL的参数?
我知道我们可以在PHP中轻松上传带有cURL的文件:如何设置--上传文件";PHP中cURL的参数?,php,linux,curl,Php,Linux,Curl,我知道我们可以在PHP中轻松上传带有cURL的文件: $c = curl_init(); curl_setopt($c, CURLOPT_VERBOSE, true); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); curl_setopt($c, CURLOPT_HEADER, false); curl_setopt($c, CURLOPT_URL, 'http://.....'); curl_setopt($c, CURLOPT_POST, tr
$c = curl_init();
curl_setopt($c, CURLOPT_VERBOSE, true);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_HEADER, false);
curl_setopt($c, CURLOPT_URL, 'http://.....');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, array('file'=>'@/home/myFile.pdf'));
echo curl_exec($c);
我有一个linux curl命令,如下所示:
curl --location --upload-file /home/myFile.pdf http://...
这在Linux命令shell中运行良好,但在PHP中(使用我在问题开头编写的代码),我无法将文件上载到url
我想我必须找到一种方法在PHP中设置cURL命令的“-upload file”选项
如何执行此操作?首先,将方法更改为放置:
// curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_PUT, true);
然后将POSTFIELDS更改为infle:
// curl_setopt($c, CURLOPT_POSTFIELDS, array('file'=>'@/home/myFile.pdf'));
$fp = fopen("/home/myFile.pdf", "rb");
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize('/home/myFile.pdf'));
启用详细输出并查看是否出现任何错误:
curl\u setopt($c,CURLOPT\u verbose,true)代码>@谢谢。我这样做:)我添加curl\u setopt($c,CURLOPT\u VERBOSE,true)代码>如@Cyclone所说。当我将方法从post更改为PUT时,服务器响应显示:400错误请求:您的浏览器发送了一个此服务器无法理解的请求
,但当我使用post方法时,它显示:411所需长度
,但是我在标题中设置了Content Length
:|@alimzm-是的,但是您也将CURLOPT\u标题设置为false,将其更改为true
@Marek-我认为CURLOPT\u infle
应该是一个文件句柄,而不是一个文件名。因此,您需要执行类似于$fp=fopen(“/home/myFile.pdf”,“rb”);卷曲设置($c,卷曲填充,$fp)代码>用新代码解决。感谢Marek&Cyclone:*