Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置--上传文件";PHP中cURL的参数?_Php_Linux_Curl - Fatal编程技术网

如何设置--上传文件";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

我知道我们可以在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, 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:*