php OSS 文件读取和写入文件,workerman 生成临时文件并输出浏览器下载

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: php OSS 文件读取和写入文件,workerman 生成临时文件并输出浏览器下载

背景

本文介绍php OSS文件读取和写入文件, workerman 生成临时文件并输出浏览器下载

php文件操作介绍

  • fstat函数:显示文件的所有信息
  • 文件读取: fread(fp,filesize(fp,filesize(fp,filesize(file_path));
  • 写入文件:file_put_contents(filepath,file_path,filepath,con,FILE_APPEND);
  • 文件操作的应用:可以操作ini文件。将服务器的配置写在ini文件中,再对其进行操作。
  • 拷贝文件:copy("e:\2.txt","d:\1.txt")
  • 创建文件夹:mkdir($path,0777,true)

workerman介绍

Workerman是一款纯PHP开发的开源高性能的PHP 应用容器。

Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的服务框架,你可以用它开发tcp代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman可以说是PHP领域的一次创新,让开发者彻底摆脱了PHP只能做WEB的束缚。

实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常驻内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协议以及各种自定义协议。拥有定时器、异步socket客户端、异步Redis、异步Http、异步消息队列等众多高性能组件。

读取文件

//读取文件
        header("Content-Type: text/html;charset=utf-8");    //设置字符编码
        $file        = base_path() . "/public/index.m3u8";
        $read        = fopen($file, 'r');
        $contents    = fread($read, filesize($file));
        $string1     = getBeforeString($contents, 'enc.key');
        $string2     = getLaterString($contents, 'enc.key');
        $newContents = $string1 . 'enc.key?token=123' . $string2;
        fclose($read);

写入文件

//写入文件、
        $file   = base_path() . "/public/test22.m3u8";
        $handle = fopen($file, 'w');              //打开文件
        fwrite($handle, $newContents);             //写入内容
        fclose($handle);                           //关闭文件
        readfile($file);                           //读取并输出文件全部内容
        return redirect(WEB_URL . '/test22.m3u8');//调转页面

读取oss文件,读取文件每行内容

//读取OSS文件
        $file = OSS_URL . $url1;
        //文件内容加入数组
        $fileContent = @file($file);
        $newContent  = '';
        //遍历文件的每一行
        foreach ($fileContent as $value) {
            //文件该行是否存在这个字符,有这替换内容
            if (strpos($value, 'api.qingsong.chaotuapp.com/') !== false) {
                $value = str_replace('app.com/', "q.com/ckey", $value);
            }
            //文件该行是否存在这个字符,有这拼接内容
            if (strpos($value, '.ts') !== false) {
                $value = $ossUrl . $value;
            }
            $newContent .= $value;
        }

临时文件写入,生成临时文件并浏览器下载

wokerman框架

//写入文件
        $fileName = "$token.m3u8";
        // ./59ee8147cf3f42575bc91ff586d54837.m3u8
        $file = "./$fileName";
        //打开文件
        $handle = fopen($file, 'w');
        //写入内容
        fwrite($handle, $newContent);
        //将文件转字符串
        $content = file_get_contents($file);
        //删除临时文件
        unlink($file);
        //输出浏览器
        $response = new Response();
        return $response->withHeader('content-description', 'File Transfer')
            ->withHeader('content-type', 'application/force-download')
            ->withHeader('content-disposition', "attachment; filename={$fileName}")
            ->withHeader('content-transfer-encoding', 'binary')
            ->withHeader('pragma', 'public')
            ->withBody($content);



相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
打赏
0
0
0
0
44
分享
相关文章
如何用阿里云 oss 下载文件
阿里云对象存储服务(OSS)提供了多种方式下载文件,以下讲解下各种方式的下载方法
6415 2
建设云上稳定性问题之为什么要在云效平台创建发布流水线并将源代码编译环节替换为从OSS下载构建部署物
建设云上稳定性问题之为什么要在云效平台创建发布流水线并将源代码编译环节替换为从OSS下载构建部署物
100 2
php + h5使用 scheme页面跳转微信小程序-其他浏览器一键跳转到微信并打开小程序
php + h5使用 scheme页面跳转微信小程序-其他浏览器一键跳转到微信并打开小程序
167 0
函数计算产品使用问题之如何实现数据的读取和修改,而不需要每次都从OSS下载完整的数据
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
阿里云OSS上传下载文件java
阿里云OSS上传下载文件java
489 0
通过FC运行脚本下载文件到OSS
本文介绍了在阿里云中使用函数计算服务(Function Compute)从URL下载文件并存储到OSS(Object Storage Service)的步骤。首先,需开通函数计算服务并创建RAM角色,授权函数计算访问OSS权限。费用详情参考官方计费概述。操作步骤包括:登录OSS控制台,使用公共模板创建执行,配置参数并运行Python脚本,脚本负责从URL下载文件并上传至指定OSS Bucket。执行成功后,文件将出现在目标OSS Bucket中。
通过FC运行脚本下载文件到OSS
oss数据解密与下载
阿里云OSS提供服务器端加密(SSE-OSS/SSE-KMS)功能,保证静态数据安全。下载加密对象时,OSS自动解密并返回原始内容。确保下载请求者有相应权限,尤其是使用SSE-KMS时。可通过SDK、图形化工具或编程框架集成下载,发起请求时,OSS自动处理解密,客户端接收解密后的数据。权限、下载方式选择及请求发起是关键步骤。
291 1
|
10月前
|
使用oss服务上传/下载对象
使用oss服务上传/下载对象
612 2
对象存储OSS产品常见问题之目前只看到能够下载对账单,但是想通过接口获取数据获取如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
OSS对象储存android开发进行下载到本地文件时异步操作失效
android vivo80使用官方示例代码进行文件下载,但是使用oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>()时onSuccess和onFailure不执行
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等