zoukankan      html  css  js  c++  java
  • 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接口中。

    下图是我在项目中的代码部分截取,作为参考:

     

     

     

     

     

     

  • 相关阅读:
    每周必写
    每周必写
    每周必写
    中国历史上成功的两人合作, 改进, 提高的例子
    每周必写(3)
    结对编程进度及自己的理解
    每周必写
    IT行业的“创新”、“模仿”
    工作时间内容,感想和思考
    周阅读内容
  • 原文地址:https://www.cnblogs.com/hld123/p/10797580.html
Copyright © 2011-2022 走看看