Dropbox / Box API 使用访问令牌直接下载文件
Dropbox / Box API direct download file with access token
我正在使用 PHP、Dropbox API 和 Box API 开发 Web 应用程序。
我已经有了使用这些 API.
的访问令牌
我的需求是:
1. 直接从 Dropbox / Box 服务器下载文件
2. 无需在浏览器中进行用户身份验证
3. 无需在 DropBox / Box
上共享文件
实际上,我的服务器上有一个 PHP 脚本,它在文件 url 上创建一个 Curl,访问令牌通过授权 header 传递。它可以工作,但在大文件上,我的脚本由于内存限制而失败(Curl 正在将文件存储在内存中,而用户正在其浏览器中下载文件)。
<?php
header("Content-Type: application/octet-stream; charset=UTF-8");
header('Content-Disposition: attachment;filename="' . $filename . '";filename*=UTF-8\'\'' . urlencode($filename));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $downloadUrl);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token));
curl_exec($ch);
curl_close($ch);
?>
出于某些隐私原因,我无法在网络服务器上存储临时文件。
出于某些用户友好的原因,我不想使用 Ajax 请求下载文件。
我在 Dropbox 和 Box API 中搜索了直接下载 link,但似乎没有可用的...
我可以尝试哪些解决方案?
我只需要添加这个授权 header 但这让我很抓狂...
注意:
对于 Google 驱动器,我们可以直接在文件下载 url 中传递访问令牌,这样效果很好。
对于OneDrive,微软给我们直接下载link
作为参考,至少对于 Dropbox,您可以在 URL 参数 "access_token" 中传递访问令牌,而不是在授权 header.
中传递
此外,在需要直接下载 link 但无法提供访问令牌的情况下,您可以使用 /media:
返回的 URL
我正在使用 PHP、Dropbox API 和 Box API 开发 Web 应用程序。 我已经有了使用这些 API.
的访问令牌我的需求是: 1. 直接从 Dropbox / Box 服务器下载文件 2. 无需在浏览器中进行用户身份验证 3. 无需在 DropBox / Box
上共享文件实际上,我的服务器上有一个 PHP 脚本,它在文件 url 上创建一个 Curl,访问令牌通过授权 header 传递。它可以工作,但在大文件上,我的脚本由于内存限制而失败(Curl 正在将文件存储在内存中,而用户正在其浏览器中下载文件)。
<?php
header("Content-Type: application/octet-stream; charset=UTF-8");
header('Content-Disposition: attachment;filename="' . $filename . '";filename*=UTF-8\'\'' . urlencode($filename));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $downloadUrl);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token));
curl_exec($ch);
curl_close($ch);
?>
出于某些隐私原因,我无法在网络服务器上存储临时文件。 出于某些用户友好的原因,我不想使用 Ajax 请求下载文件。
我在 Dropbox 和 Box API 中搜索了直接下载 link,但似乎没有可用的...
我可以尝试哪些解决方案?
我只需要添加这个授权 header 但这让我很抓狂...
注意: 对于 Google 驱动器,我们可以直接在文件下载 url 中传递访问令牌,这样效果很好。 对于OneDrive,微软给我们直接下载link
作为参考,至少对于 Dropbox,您可以在 URL 参数 "access_token" 中传递访问令牌,而不是在授权 header.
中传递此外,在需要直接下载 link 但无法提供访问令牌的情况下,您可以使用 /media:
返回的 URL