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

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

PHP中filesystem的使用的更多相关文章

  1. Hadoop中FileSystem的append方法

    今天在使用Hadoop 1.1.2版本进行FileSystem的append操作时报以下异常: org.apache.hadoop.ipc.RemoteException: java.io.IOExc ...

  2. node中fileSystem改promise

    请注意,fs的大部分函数回调只会返回一个error参数,所以只要判断error为false的情况下就返回成功,无论有没有第二个参数. 另外exists需要单独包装,因为第一个参数就代表返回内容 con ...

  3. Objective-C中的类目,延展,协议

    Objective-C中的类目(Category),延展(Extension),协议(Protocol)这些名词看起来挺牛的,瞬间感觉OC好高大上.在其他OOP语言中就没见过这些名词,刚看到这三个名词 ...

  4. C/C++ 中判断某一文件或目录是否存在

    方法一:C++中比较简单的一种办法(使用文件流打开文件) #include <iostream> #include <fstream> using namespace std; ...

  5. Hadoop权威指南:通过FileSystem API读取数据

    Hadoop权威指南:通过FileSystem API读取数据 [TOC] 在Hadoop中,FileSystem是一个通用的文件系统API 获取FileSystem实例的几个静态方法 public ...

  6. 3 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之heartbeat的搭建

    preface 在上节的说了mysql的搭建,这节我们在上节的基础上,继续搭建heartbeat. 安装和配置heartbeat 采用yum安装,dbmaster81和dbbackup136上都安装, ...

  7. Linux文件管理浅析(一) _磁盘管理基础

    本文主要讨论一些磁盘管理相关的基本概念,同时也是这一系列文章的第一篇,就是下图中的最下一层的一部分. 在Linux中,SATA/USB/SCSI接口都是使用SCSI模块实现的,所以使用这些接口的硬盘在 ...

  8. java.util.ServiceLoader使用

    近期在项目中需要实现能在配置文件中定义多个统一接口类型的类,可以在程序中获取到所有配置的类,刚开始打算配置到properties中,然后去程序读取,感觉这种方式不太灵活,于是,研究研究java中有没有 ...

  9. Ubuntu 备份系统为ISO镜像 & 解决ISO限制4GB大小 & Clone当前系统到其他电脑

    看标题,标题涵盖了3个部分,Ubuntu 备份系统为ISO镜像,  解决ISO限制4GB大小 ,  Clone当前系统到其他电脑  我们就从三个部分说起. Ubuntu 备份系统为ISO镜像 在Win ...

随机推荐

  1. Python MySQLdb连接报2003错误原因

    经测试,本地连接使用:localhost会报2003错误. 解决办法: 使用:127.0.0.1代替:localhost.

  2. Ubuntu解决sudo: source: command not found错误

    Ubuntu Server上执行以下命令,可以看到默认打开的文件数限制为1024个. $ ulimit -n 1024 编辑/etc/profile配置文件,在最后添加一行: ulimit -SHn ...

  3. firstpage 2015/5/21

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="firstPage.aspx ...

  4. android listView布局等分列

    android listView布局4等分列. 必须要加上<RelativeLayout 在外层,不然等分不起作用 <RelativeLayout xmlns:android=" ...

  5. metasploit-数据库支持

    db_status db_disconnect db_connect 用户名:口令@服务器地址:端口/数据库名称 createdb msf4 -E UTF8 -T template0 -o msf3 ...

  6. CentOS 6.6 MySQL 8.0详细安装步骤

    1.备份服务器上MySQL数据库 [root@localhost ] # mysqldump -h localhost -u root -proot --databases Surpass --rou ...

  7. 深入jetty的使用详解

    简介: Jetty 是一个用 Java 实现.开源.基于标准的,并且具有丰富功能的 Http 服务器和 Web 容器,可以免费的用于商业行为.Jetty 这个项目成立于 1995 年,现在已经有非常多 ...

  8. 【JAVA 学习笔记1】代码注释

    在JAVA中支持单行注释和多行注释 1.单行注释,只要在注释的一行代码中加上双斜杠即可 例如: // int a=2,b=4,c=8; 2.多行注释,在开始位置加上/* 结束位置加上*/ 例如 /* ...

  9. 字体变色详解链接:https://www.cnblogs.com/daofaziran/p/9015284.html

    格式:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m 字体色 | 背景色 | 颜色描述 ------------------------------------------- 30 ...

  10. 如何使用jQuery实现根据不同IP显示不同的内容

    一些SEM的投放页会针对不同地域做针对性的内容推广,下面我把实现方法分享出来. 一.引用新浪提供的IP查询的js库 <script src="http://int.dpool.sina ...