【发布时间】:2014-02-28 08:56:02
【问题描述】:
我正在尝试通过 PUT 将一些文件上传到网络服务器。
我在服务器端使用 Phil Sturgeon 的 REST 库。
客户端是一个使用 curl 生成请求的 PHP 应用程序。
...
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch,CURLOPT_INFILE,$fp);
curl_setopt($ch,CURLOPT_INFILESIZE,$fsize);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$headarray = array();
if ($api_key)
$headarray[] = 'X-API-KEY:'.$api_key;
$headarray[] = "Content-Type: application/octet-stream";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headarray);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_exec($ch);
...
正在接收数据。 但是,当我查看服务器端的 $this->put() 时,我得到一个看起来像我的输入文件已解析的数组。我希望将整个文件作为一个字符串作为原始数据提供。
我尝试改用fopen("php://input", "r");,但它是空白的。大概这已经被 REST 库使用了。
我在使用 curl 之前没有写过 PUT 请求,所以这方面可能有问题。
有没有 $this->put() 的替代方法,它会给我原始输入而不是数组。
看来我可能必须将我的文件放入一个参数中,如果是这样,当我使用 CURLOPT_INFILE 时如何使用 curl 执行此操作?我希望能够发送大文件而不会遇到 php 的内存限制。
【问题讨论】:
标签: php codeigniter rest curl put