如果我按照 box api 2.0 curl 示例获取文件的元数据,我会得到信息。当我将 /data 附加到 url 以下载文件时,curl 说:
curl:(52)来自服务器的空回复
我用两个文件做了这个,都是文本文件,结果相同。
这里的系统是 OpenBSD 5.0。
在 python 3 中,相同的请求引发了一个异常,表明来自服务器的回复包含一个空的状态行。
如果我按照 box api 2.0 curl 示例获取文件的元数据,我会得到信息。当我将 /data 附加到 url 以下载文件时,curl 说:
curl:(52)来自服务器的空回复
我用两个文件做了这个,都是文本文件,结果相同。
这里的系统是 OpenBSD 5.0。
在 python 3 中,相同的请求引发了一个异常,表明来自服务器的回复包含一个空的状态行。
我遇到过同样的问题。问题是您需要将CURLOPT_FOLLOWLOCATION
选项设置为true。Box 将执行从 API 调用到实际文件的重定向。没有它,它将返回一个空响应。
我遇到了同样的问题。我已成功上传文件,检索了文件 ID,然后当我尝试下载文件时,没有任何反应。就像提到的原始海报一样,如果我去掉 URL 的“/data”部分,那么我可以成功获取有关该文件的所有信息。
这是我的“下载代码”,它是从带有该特定文件 ID 的简单“下载文件”按钮的表单中调用的。
$boxkey = "ThisIsMyAPIKey";
$auth_token = $_POST['auth_token'];
$url = "https://www.box.com/api/2.0/files/".$_POST['file_id']."/data";
$header = array("Authorization: BoxAuth api_key=".$boxkey."&auth_token=".$auth_token);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_exec($ch);
curl_close($ch);
如果文件本身为空,则应返回空响应。例如,如果两个文本文件中没有任何文本,则不会返回任何文本,即这似乎是预期的行为。
$url = "https://api.box.com/2.0/files/$fileId/content?access_token=$accessToken";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch);
curl_close($ch);