PHP中filesystem的使用
PHP中filesystem的使用
最近在用腾讯云COS上传对象的时候,涉及到文件流的使用
参考文档:https://cloud.tencent.com/document/product/436/12266
此处是将fopen打开的资源句柄,直接作为参数传到body中。
问题:上传大文件时,需要将其分块传到本地服务器,再由服务器拼接后,作为body参数传入进去,如果不考虑往新的文件里面追加写入的话,作为文件流如何处理?
方案:使用redis队列存入数据流,然后当前文件全部写入后,
$tempName = $video->getPathname();
Redis::rpush($key.'stream',file_get_contents($tempName));
//往redis里面写入文件流
$filename="/saas/wwwroot/api_server/upload/".$key.'file.'.$extension;
if (!file_exists($filename)){
touch($filename);
chmod($filename,0777);
}
//文件分块全部传输到本地服务器
if ($redis_size==$totalSize){
$stream=Redis::lrange($key.'stream',0,-1);
$fp = fopen ( $filename, 'w+' );
$fs = 0; //写入的文件大小
foreach ($stream as $v){
$fs += fwrite($fp,$v);
}
fseek($fp,0); //把文件指针指向文件的开头
//继续业务处理。。。
}
然后将这个$fp作为body对应的参数值传入腾讯云upload接口中。
下图是我在项目中的代码部分截取,作为参考:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)