1

我们正在创建一个允许用户上传大文件的表单。在移动设备和慢速连接上,上传可能需要一段时间,因此通过向用户显示进度条(或让他们知道它仍在工作)的 AJAX 调用来处理这似乎很重要。

问题出在:上传的端点是第 3 方 API,它需要我们的 API 密钥作为参数之一。这是他们文档中直接指向该部分的链接。此 API 密钥不能暴露给客户端的用户。

我的第一反应是将表单提交到我们网站上的中间 PHP 脚本,该脚本具有 API 密钥,然后将文件上传到 API。但我很确定这意味着将文件上传两次:一次到我们的服务器。然后再次从我们的服务器到 API 端点。即使表单是使用 AJAX 提交的,用户等待两倍的时间才能完成也不是一个好的结果。

那么:让用户上传文件同时保证我们的 API 密钥安全的最流畅的方法是什么?

一些可能重要也可能不重要的细节:
我们的网站是一个基于 CakePHP 框架 (v2.x) 的 PHP Web 应用程序。上传的文件是长度在 1 到 5 分钟之间的所有不同格式的视频文件。API 是一家名为 Wistia 的公司(请参阅上面的文档链接)。文件大小似乎在 3-30MB 之间。我们没有能力改变 3rd 方 API 的工作方式。

4

3 回答 3

0

应该可以从 php://input 读取原始帖子流,您可以从那里获取上传的文件(如果您可以解析它:))并立即开始上传到 api 服务器。

但是即使移动设备和您的脚本之间的通信很慢,您的脚本也可能会快速上传到 api 服务器。那么真的需要吗?

于 2013-07-25T15:21:27.587 回答
0

上传两次应该不是问题 - 应该吗?

它从您的服务器到他们的 API——这就是服务器和 API 的用途——交换数据。

Javascript 不适用于此。

于 2013-07-25T14:56:45.440 回答
0

没有办法在客户端隐藏它,所以你的第一直觉是正确的——你需要从服务器转发文件。

于 2013-07-25T14:57:03.123 回答