如何同时(PHP)卷曲由AJAX上传的文件

时间:2013-07-29 11:56:31

标签: php ajax file-upload curl

我有一个表单,允许用户将大型视频文件上传到第三方API端点。 API期望api密钥作为参数之一,因此为了保护它,我将表单提交给PHP脚本,PHP脚本使用curl将文件发送到API。这是有效的,但问题是它意味着文件上传两次:一次到我的PHP脚本,然后再从PHP脚本到API。有没有办法并行完成这两个?换句话说,让curl脚本在ajax上传完成之前开始上传吗?

1 个答案:

答案 0 :(得分:1)

如果你从post更改为put,你可以使用

$input = fopen('php://input','r');

然后fread它喜欢标准的大文件,然后发送卷曲的部分块?

您需要使用CURLOPT_READFUNCTION以块的形式传递它。

请注意,如果用户因任何原因而需要清理丢失的文件

我不确定使用帖子的方式

小例子

使用此选项设置curl

curl_setopt($ch, CURLOPT_READFUNCTION, functionCall));


function functionCall($ch, $data){
 global $input;
 return fread($input, $length);

}

$ length是每个块中发送的数据量。在上传开始之前,suer必须至少上传该数量

8192是一个很受欢迎的长度,给它一个去吧