在PHP中RESTful上传文件

时间:2010-07-07 06:46:50

标签: php api rest

所以我正在开发一个脚本,它将通过RESTful接口将视频上传到服务器。文档告诉我,我应该将数据(包括二进制视频文件)作为POST请求的一部分传递。我知道如何设置我的POST变量,但我不知道如何做二进制数据。 API说我应该有一个名为'media'的字段,它应该包含原始视频数据。

所以,假设我有一个名为'video1.mp4'的视频,我希望将其内容包含在我的'media'POST变量中。我怎么能这样做?

谢谢!

1 个答案:

答案 0 :(得分:5)

我不知道你是如何与API通信的,但我会假设这个例子是cURL。要发送文件,请使用CURLOPT_POSTFIELDS选项:

  

<强> CURLOPT_POSTFIELDS
  要在HTTP“POST”操作中发布的完整数据。要发布文件,请在文件前加上@并使用完整路径。这可以作为urlencoded字符串传递,如'para1 = val1&amp; para2 = val2&amp; ...',或者作为一个数组,字段名称作为键,字段数据作为值。如果value是数组,则Content-Type标头将设置为multipart / form-data。

在页面上有一个例子:

$ch = curl_init();

$data = array('name' => 'Foo', 'media' => '@/home/user/test.png');

curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);