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

最佳答案

如果你换个职位

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

然后fread喜欢标准的大文件,然后用curl发送部分块?
您需要使用curlopt_readfunction将其分块传递。
请注意,如果用户因任何原因停止,您将需要清理丢失的文件
我不知道怎么用邮政
小例子
使用此选项设置卷曲
curl_setopt($ch, CURLOPT_READFUNCTION, functionCall));


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

}

$length是每个块中发送的数据量。在上传开始之前,发起者必须至少上传这个数量
8192是流行的长度,试试看

07-24 09:47
查看更多