PHP中filesystem的使用

PHP中filesystem的使用redis

最近在用騰訊雲COS上傳對象的時候,涉及到文件流的使用api

參考文檔:https://cloud.tencent.com/document/product/436/12266服務器

此處是將fopen打開的資源句柄,直接做爲參數傳到body中。ide

 

問題:上傳大文件時,須要將其分塊傳到本地服務器,再由服務器拼接後,做爲body參數傳入進去,若是不考慮往新的文件裏面追加寫入的話,做爲文件流如何處理?spa

方案:使用redis隊列存入數據流,而後當前文件所有寫入後,指針

 $tempName = $video->getPathname();server

 Redis::rpush($key.'stream',file_get_contents($tempName));對象

 //redis裏面寫入文件流blog

 $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接口中。

下圖是我在項目中的代碼部分截取,做爲參考:

 

相關文章
相關標籤/搜索