当前位置: 首页 > 后端技术 > PHP

用PHP分片上传文件到优拍云对象存储

时间:2023-03-29 16:22:45 PHP

本文参与优拍云原创科技征文活动报名&实名认证报名。我不会谈论它。您可以到优拍云进行注册。注册后需要实名认证,否则不能使用,但由于我已经实名认证了(当时没有截图),网上很难找到截图。我找到了一个很模糊,但还是看得见的认证方式:支付宝芝麻信用如果你的信用评分在700以上,就选择支付宝芝麻信用认证。如果没有信用分,可以选择体力工(如果选择体力工,需要上传手上的身份证照片)。你所属的行业:我的是博客,所以选择门户网站→博客站点/产品:填写你的网站名称即可(如果你还没有,随便想一个)网站地址:写博客自己建的域名,没有的话就用csdn、博客园、新浪博客等博客地址,没有的话好像不用写个人名:write您的姓名(与您的身份证相同)身份证号:如实填写,否则将无法通过实名认证创建存储桶登录后,点击页面右上角的控制台,然后选择cloudproducts→cloudstorage点击右上角创建服务(这里叫服务,其他云一般叫“存储桶”,英文“bucket”)填入下图,这里加速是根据你的需要,但是如果选择全球加速,价格肯定会比国内贵加速;如果你之前是运营商如果不是,你需要新建一个并授权,因为调用api需要账号密码,但是这个账号密码不是你注册拍云的账号密码,而是需要创建这里新增一个,叫做“operator”,用来测试operator账号和默认域名Youpaiyun的对象存储,支持直接ftp登录。这里我使用filezilla登录(其他ftp工具类似)。打开filezilla,如下图,点击左上角“站点管理器”图标(也可以直接点击菜单文件→站点管理器)进入如下界面,然后如下图填写参数下图。如果ftp可以连接,也可以上传文件。操作员帐户没有任何问题。如果连接不上,可能是忘记授权了。您可以点击右上角的用户名→账户管理,然后点击操作员→管理,查看操作员是否有权限。如果没有,给它添加权限,再试一次,应该没问题。另外,我们也可以在网页上传文件创建一个服务,排云会默认给我们一个测试域名。域名结构为“https://服务名.test.upcdn.net”,其实在控制台也可以看到,点击上图中的“配置”→选择域名管理选项卡(其实,默认是这个选项卡)→滚动到底部可以看到发送的测试域名。使用php分片上传文件RESTAPI文档,其中并行断点续传和串行断点续传,是分片上传的,但是在排云中已经有写好的php-sdk,不需要我们自己写。直接传参数就行了。创建一个文件夹UploadToUpyun,在终端进入这个文件夹,使用composer安装sdk(没有composer命令请自行安装,应该是0202吧?)composerrequireupyun/sdk安装完成后,在UploadToUpyun文件夹下创建一个index.php,代码如下,注释已经写的很清楚了,填上你的参数就可以正常运行了,相信没有人不会15728640){/*uploadType有两个值-BLOCK:Serialchunkupload-BLOCK_PARALLEL:Parallelchunkupload*//然后可以继续设置参数对于新的config对象的属性(参数可以直接查看Config类:vendor/upyun/sdk/src/Upyun/Config.php)//设置uploadType=BLOCK_PARALLEL表示使用并行片段上传$serviceConfig->uploadType='BLOCK_PARALLEL';}$client=newUpyun($serviceConfig);$fp=fopen($uploadFilePath,'rb');$retArr=$client->write($key,$fp);//var_dump($retArr);exit;/**$retArr*array(6)的返回值{'x-upyun-content-length'=>string(5)"47028"'x-upyun-height'=>string(3)"473"'x-upyun-content-type'=>string(9)"image/png"'x-upyun-file-type'=>string(3)"PNG"'x-upyun-width'=>string(3)"839"'x-upyun-frames'=>string(1)"1"}*///我们随机取一个元素判断是否上传成功if(isset($retArr['x-upyun-content-length'])){//在实际使用中,$key可能是用户传递的,如果不知道$key是否以斜杠开头,先删除它并添加一个echo$defaultDomain.'/'.ltrim($key);}else{echo'Uploadfailed.';}好了,我写到这里了,好好享受吧!