温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在PHP中使用OSS上传文件

发布时间:2021-04-30 15:40:22 来源:亿速云 阅读:365 作者:Leah 栏目:开发技术

本篇文章给大家分享的是有关怎么在PHP中使用OSS上传文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

php有什么特点

1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象编程:PHP提供了类和对象。5、版本更新速度快。6、具有丰富的功能。7、可伸缩性。8、功能全面,包括图形处理、编码与解码、压缩文件处理、xml解析等。

一、安装阿里云 oss sdk

在网站根目录执行下面命令,安装oss sdk。

composer require aliyuncs/oss-sdk-php

安装后,会在 网站根目录/vendor 下找到一个名为 `aliyuncs` 的文件夹。

注:[阿里云 oss - sdk 文档(可不用关注)](https://help.aliyun.com/document_detail/32099.html "官方 oss - sdk 文档")

二、使用

1、获取 OSS AccessKeyId、AccessKeySecret

如果没有这两个数据可以参考 https://blog.csdn.net/m_nanle_xiaobudiu/article/details/101756805。

2、简易上传 Html 处理

upload.html

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>小卜丢个人站 - oss图片上传</title> </head> <body>     <form action="oss-image/upload-image.json" method="post" enctype="multipart/form-data">         <label for="file">文件名:</label>         <input type="file" name="image" id="file"><br>         <input type="submit" name="submit" value="提交">     </form> </body> </html>

3、控制器处理 OssImageController.php

直接将请求发送到service,不用关注此层

<?php declare(strict_types = 1); namespace app\controllers; use app\services\OssImageService; class OssImageController extends BaseController {     /**      * oss上传图片      *      * @return string      * @throws \OSS\Core\OssException      */     public function actionUploadImage()     {         return $this->response(OssImageService::service()->uploadImage());     } }

 4、service层处理 OssImageService.php

PHP处理在此层,关注此层即可

<?php declare(strict_types = 1); namespace app\services; use app\extensions\AliOss; class OssImageService extends BaseService {     /**      * oss上传图片      *      * @return array      * @throws \OSS\Core\OssException      */     public function uploadImage()     {             $ossClient  = AliOss::getOssClient();             $bucketName = AliOss::getBucketName();             // 文件名             $fileName = $_FILES['image']['name'];             // 临时文件位置             $tmpFile = $_FILES['image']['tmp_name'];             // 定义文件存储的oss位置             $ossPath = 'test/'.date('Y-m-d').'/'.date('Hi') .mt_rand(10000,99999);             // 定义oss object             $object = $ossPath .'.' .$this->getExtension($fileName);             // 执行上传并获取返回 oss 信息             $info = $ossClient->uploadFile($bucketName, $object, $tmpFile);             $ossUrl = $info['oss-request-url'];             // 如果图片的协议是http,则转换成https             if (substr($ossUrl, 0, 4) == 'http') {                 $ossUrl = substr_replace($ossUrl, 'https', 0, 4);             }             $data = [                 'file_url'  => $ossUrl,                 'file_name' => basename($ossUrl)             ];             return $data;     }     /**      * 返回文件扩展名      *      * @param $fileName      * @return mixed      */     private function getExtension($fileName)     {         return pathinfo($fileName)['extension'];     } }

5、oss 实例及参数获取封装 AliOss.php

<?php declare(strict_types = 1); namespace app\extensions; use OSS\OssClient; use OSS\Core\OssException; /**  *阿里云oss文件上传  */ class AliOss {     const endpoint        = 'oss-cn-hongkong.aliyuncs.com';     const accessKeyId     = 'LSDFskkdDDSSdkfg';     const accessKeySecret = 'LT9cG3JkGKffRPalgk4n33lk8Ll41d';     const bucket          = 'hk-server';     /**      * 根据Config配置,得到一个OssClient实例      *      * @return OssClient 一个OssClient实例      */     public static function getOssClient()     {         try {             $ossClient = new OssClient(self::accessKeyId, self::accessKeySecret, self::endpoint, false);         } catch (OssException $e) {             printf(__FUNCTION__ . "creating OssClient instance: FAILED\n");             printf($e->getMessage() . "\n");             return null;         }         return $ossClient;     }     public static function getBucketName()     {         return self::bucket;     } }

6、结果是可以上传成功

返回图片在oss中的完整访问url的

{     status: 1,     msg: "success",     data: {         file_url: "https://hk-server.oss-cn-hongkong.aliyuncs.com/test/2018-08-22/211753008.jpg",         file_name: "211753008.jpg"     } }

以上就是怎么在PHP中使用OSS上传文件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI