百度开放云对象存储文件系统

通过php流包装器像操作本地文件系统一样操作百度开放云(BCE)的BOS对象存储。

简介

该项目实现了一个php的流包装器,提供从php文件读写函数到BOS云存储的映射。

加载BOSWrapper.class.php并注册BOSWrapper类为流协议后,即可用php文件读写函数通过 协议名://文件路径 操作BOS上的文件。

支持绝大多数php文件和目录操作函数,如读写(fopen、file_* 等)、目录遍历(opendir)、重命名(rename)、拷贝(copy)、删除(unlink、rmdir)、创建目录(mkdir)等。拷贝不仅支持从BOS到BOS,还支持在本地文件系统和BOS之间拷贝(这是php文件系统提供的特性)。

BOSWrapper.class.php中默认注册的流协议为 bosfs:// ,您可直接使用。但在使用之前,您需配置 conf.inc.php 中的BOS相关信息(公钥、私钥、Bucket)。

用途

移植应用到BAE的难度之一就是BAE的本地文件操作是临时的,因而我们不得不重写文件上传的代码才能把文件存储在其他地方(如BOS),这很复杂。

但如果我们能做一个兼容层,使BOS在php上表现的就和本地文件系统一样,那么我们只要改动文件的上传目录就能完成移植了!

大部分设计良好的php程序都能通过调整配置文件轻松改变文件上传目录,因此移植一个程序到BOS只需以下几步:

将本项目文件复制到已有的php程序中的适当位置。

在BOS中创建Bucket,配置 conf.inc.php。

在原程序的主配置文件中:

require_once '本项目路径/BOSWrapper.class.php';

调整原程序的配置,将文件上传目录改为:

bosfs://任意目录

调整原程序的配置,将文件浏览URL改为(Bucket读写权限须设置为公共读):

http://你的Bucket.地区.bcebos.com/第四部指定的目录

移植轻松完成。

Mediawiki插件

如果您正在使用Mediawiki,您可以直接使用本项目的Mediawiki插件。使用方法如下:

将整个BOSFS目录复制到Mediawiki的extensions目录下。

在 LocalSettings.php 中加入如下语句:

require_once "$IP/extensions/BOSFS/BOSFS.php";

去BOS创建Bucket,然后修改文件上传设置:

$wgEnableUploads = true;

$wgUploadDirectory = 'bosfs://upload';

$wgUploadPath = 'http://你的Bucket.地区.bcebos.com/upload';

正确配置插件目录中的 conf.inc.php 后即可使用文件上传。

例子

以下是使用本项目读写BOS文件的例子:

//提示:使用前请先配置conf.inc.php

//加载流包装器

require_once './BOSWrapper.class.php';

//创建目录

mkdir('bosfs://test', 0777);

//写文件

file_put_contents('bosfs://test/a.txt', '老虎是个道童');

//拷贝

copy('bosfs://test/a.txt', 'bosfs://test/b.txt');

//修改

$fp = fopen('bosfs://test/b.txt', 'r+');

fseek($fp, -6, SEEK_END); //假设用UTF-8编码

fwrite($fp, '程序员');

fclose($fp);

//输出

readfile('bosfs://test/b.txt');

//删除

unlink('bosfs://test/b.txt');

unlink('bosfs://test/a.txt');

rmdir('bosfs://test');

?>

已知的问题

不支持跨Bucket操作,目前Bucket在conf.inc.php中写定,一次只能操作一个Bucket。

程序把BOSFS当作lock文件存放目录时会发生锁文件无法删除的问题。建议程序使用本地目录作为lock文件存放目录,或者干脆关掉lock功能。

支持UTF-8编码的中文文件名,但是GBK支持未知(要看BOS是否支持),

因此建议文件名只使用UTF-8编码。

无法删除目录。

技术细节

BOS本身并无目录中,以/结尾的文件会被视为目录。

作者

授权

放弃著作权声明

自本声明发布起,本人自愿放弃该项目的一切著作权,将其置入公有领域。注意:该项目中仅本人所有的部分置入公有领域,其他部分(如BCE SDK)的著作权保护状态维持不变。

置入公有领域的文件列表:

BOSFS.php //BOSFS的Mediawiki插件

BOSWrapper.class.php //BcsFS的流包装器

README.md //本说明文件

版本库

时间

BcsFS的README:老虎会游泳写于 2016年2月26日 15:06:23(丙申年正月十九未时)

BOSFS的README:更新于 2016年6月20日 13:54:14(丙申年五月十六未时)

百度 bos php,GitHub - SwimmingTiger/BOSFS: PHP流包装器:百度开放云对象存储文件系统(BCE BOS File System)...相关推荐

  1. 百度智能云对象存储BOS批量下载文件方法

    百度智能云对象存储BOS支持批量打包下载吗?目前对象存储BOS浏览器端不支持批量下载,可以使用对象存储BOS桌面或BOSCMD批量下载,也可以使用API/SDK调用接口循环下载.新手站长网来详细说下百 ...

  2. Thinkphp对接百度云对象存储 BOS【实现网页版的百度云盘】

    本篇文章给大家带来的内容是关于Thinkphp5对接百度云对象存储 BOS(代码Case),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 首先下载SDK包可以在 官网下载 ,或者在项 ...

  3. 流包装器实现WebShell免杀

    说明: 本文首发自 https://www.secpulse.com/archives/73391.html ,转载请注明出处. 前言 本文是看PHP使用流包装器实现WebShell有感,权当做个笔记 ...

  4. 怎么把文件存进obs服务器,华为云对象存储 obs 文件流上传

    2019-12-25 11:14:08 foolish 995 华为云对象存储 obs 文件流上传 /** * obs 二进制流上传 * * @return \Illuminate\Http\Json ...

  5. 使用百度云对象存储BOSnodejs上传文件

    BOS上传文件核心代码 const config = {credentials: {ak: '',sk: ''} };let bucket = ''; let client = new BosClie ...

  6. java 百度云对象存储STS鉴权

    百度云STS鉴权获取临时上传的token供第三方调用 StsClient stsClient = new StsClient(); GetSessionTokenRequest rq = new Ge ...

  7. ossfs挂载百度对象存储_阿里云对象存储OSS挂载工具

    前言 宝塔面板里有类似服务9.9一个月,愿意花钱的大佬们也不会搜到我这篇文章 不想花钱的小伙伴们就仔细看看下面我这篇文章吧 科普:linux常用命令: ls 查看当前目录下文件 安装及配置 下载:安装 ...

  8. hdfs 数据迁移_对象存储BOS发布全新工具,加速自建HDFS到云端的访问速度

    想让自建Hadoop拥有流畅的云端访问体验?想替老板省点钱?是时候升级你的装备了! 百度智能云对象存储服务BOS新推出BOS HDFS工具,支持HDFS数据在BOS中的海量存储,并能在上层数据运算中使 ...

  9. wrapper php,PHP流Streams、包装器wrapper概念与用法实例详解

    本文实例讲述了PHP流Streams.包装器wrapper概念与用法.分享给大家供大家参考,具体如下: 流Streams这个概念是在php4.3引进的,是对流式数据的抽象,用于统一数据操作,比如文件数 ...

  10. php流Streams、包装器wrapper 详解

    流Streams这个概念是在php4.3引进的,是对流式数据的抽象,用于统一数据操作,比如文件数据.网络数据.压缩数据等,以使可以共享同一套函数, php的文件系统函数就是这样的共享,比如file_g ...

最新文章

  1. 服务器里这么修改404页面,网站404页面怎么做
  2. 爱数之介质服务器及介质同步技术
  3. 什么是重构,什么不是重构
  4. HTML 文件在PC移动端完美自适应布局的技巧
  5. [Redux/Mobx] 说说redux的优缺点分别是什么?
  6. 双舵轮AGV轨迹跟踪Pure Pursuit算法模型分析、python代码实现
  7. 偷梁换柱“Windows 11安装包”竟成了恶意程序?
  8. 中文打字速度测试软件单机版,中文打字速度测试软件
  9. 谨慎redis的timeout参数
  10. 「Python条件结构」嵌套if:根据星期英文字母输出相应的星期
  11. win7怎么桌面显示计算机图标不见了,win7显示桌面图标不见了如何恢复【图文】...
  12. c语言 准确赋值浮点数,C语言浮点数
  13. 【玩转微信公众平台之九】 第一个功能:消息自动回复
  14. 阿里云API网关(9)常见问题
  15. 偷学三太子敖丙的功力
  16. Excel给证件照换底色,红、蓝、白底任你换,看完涨知识了
  17. 怎么看懂UML中的类图?
  18. torch.Linear(input_size,output_size, bia = True/Flase)
  19. SAS中创建分组变量
  20. heritrix3 java_Windows配置heritrix3做网络爬虫开发实例

热门文章

  1. Java中获取实时时间
  2. 细枝末节都交给App 我只负责享受生活 | 2016与我的数字生活
  3. LMDB:轻量级内存映射数据库-----入门使用1
  4. “数据折叠:那些AI背后“标数据的人”正在回家
  5. 博科交java插件_博科光纤交换机配置
  6. 饥荒正版怎么创建专用服务器,饥荒联机版如何创建本地服务器 创建本地服务器步骤...
  7. 用计算机弹极乐净土谱,极乐净土计算器乐谱
  8. 有源光网络VS无源光网络
  9. 密码套件 and 弱密码套件漏洞
  10. netty权威指南(第二版)对应的源码