如何使用cURL发布文件

时间:2015-03-06 13:01:28

标签: php curl

我第一次使用cURL。我必须发送一个用户发布的图像文件和一个音频文件。

我的cURL代码正在运行,但我的代码正在发送.tmp文件而不是图像文件和音频文件。

我用谷歌搜索它,但在每个例子中我发现它们直接使用了文件的真实路径。

我试图找到该文件的真实路径,但我没有找到任何解决方案。 这是我的代码块,我在其中收集数组中的所有数据以将其传递给cURL:

$name = $_POST['name'];

$image = $_POST['image']['name'];
$imagetmp = $_POST['image']['tmp_name'];
$imagesize = $_POST['image']['size'];
$imagepath = '@'.$imagetmp;

$audio = $_POST['audio']['name'];
$audiotmp = $_POST['audio']['tmp_name'];
$audiosize = $_POST['audio']['size'];
$audiopath = '@'.$audiotmp;

$data = array("name" => $name, "image"=> $imagepath, "audio" => $audiopath); //array to sned data using cURL

//my cURL code to post data

我在哪里做错了?如何使用cURL发送文件?

2 个答案:

答案 0 :(得分:0)

这是我用来发布文件数据的内容:

$filedata = file_get_contents('file_location/filename.jpg');    
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $filedata);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/octet-stream'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$return = curl_exec($ch);
curl_close($ch);

答案 1 :(得分:-2)

您可以使用带有curl的file = @ path

curl -kiSs -X POST https://<domain>/path/to/api/files/ \
-F "param1=param2" \
-F "file=@/path/to/test.xlsx"  \
-H "Authorization":"bearer eyJhbGciOiJIUzI1NiIsIn"

File successfully uploaded (test.xlsx!)