如何通过PHP使用OSS实现高效文件上传操作?

2026-04-06 07:131阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计875个文字,预计阅读时间需要4分钟。

如何通过PHP使用OSS实现高效文件上传操作?

目录

一、安装阿里云OSS SDK

二、使用

1. 获取OSS AccessKeyId和AccessKeySecret 2. 简易上传Html处理 3. 控制器处理OssImageController.php 4. Service层处理OssImageService.php 5. OSS实例及参数获取封装

目录
  • 一、安装阿里云 oss sdk
  • 二、使用
    • 1、获取 OSS AccessKeyId、AccessKeySecret
    • 2、简易上传 Html 处理
    • 3、控制器处理 OssImageController.php
    •  4、service层处理 OssImageService.php
    • 5、oss 实例及参数获取封装 AliOss.php
    • 6、结果是可以上传成功
  • 三、问题说明

    一、安装阿里云 oss sdk

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

    composer require aliyuncs/oss-sdk-php

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

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

    二、使用

    如何通过PHP使用OSS实现高效文件上传操作?

    1、获取 OSS AccessKeyId、AccessKeySecret

    如果没有这两个数据可以参考 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']; // 如果图片的协议是hk-server.oss-cn-hongkong.aliyuncs.com/test/2018-08-22/211753008.jpg", file_name: "211753008.jpg" } }

    这时,我们访问 hk-server.oss-cn-hongkong.aliyuncs.com/test/2018-08-22/211753008.jpg 就可以正常获取到图片了,并且在oss管理控制台也是可以找到上传的文件的。

    这只是将文件上传到 oss 上,并将 文件的 url 返给前端,但还没有将文件的信息存在本地。这里建议前端接收到该url后,连同文件的其他数据(比如分类、文件名等)再请求后端的另外的接口,进行本地数据库的信息存储。

    三、问题说明

    可能会出现 The OSS Access Key Id you provided does not exist in our records 等问题,不要慌,重新生成一下就好了。

    以上就是详解PHP使用OSS上传文件的详细内容,更多关于PHP使用OSS的资料请关注自由互联其它相关文章!

    本文共计875个文字,预计阅读时间需要4分钟。

    如何通过PHP使用OSS实现高效文件上传操作?

    目录

    一、安装阿里云OSS SDK

    二、使用

    1. 获取OSS AccessKeyId和AccessKeySecret 2. 简易上传Html处理 3. 控制器处理OssImageController.php 4. Service层处理OssImageService.php 5. OSS实例及参数获取封装

    目录
    • 一、安装阿里云 oss sdk
    • 二、使用
      • 1、获取 OSS AccessKeyId、AccessKeySecret
      • 2、简易上传 Html 处理
      • 3、控制器处理 OssImageController.php
      •  4、service层处理 OssImageService.php
      • 5、oss 实例及参数获取封装 AliOss.php
      • 6、结果是可以上传成功
    • 三、问题说明

      一、安装阿里云 oss sdk

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

      composer require aliyuncs/oss-sdk-php

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

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

      二、使用

      如何通过PHP使用OSS实现高效文件上传操作?

      1、获取 OSS AccessKeyId、AccessKeySecret

      如果没有这两个数据可以参考 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']; // 如果图片的协议是hk-server.oss-cn-hongkong.aliyuncs.com/test/2018-08-22/211753008.jpg", file_name: "211753008.jpg" } }

      这时,我们访问 hk-server.oss-cn-hongkong.aliyuncs.com/test/2018-08-22/211753008.jpg 就可以正常获取到图片了,并且在oss管理控制台也是可以找到上传的文件的。

      这只是将文件上传到 oss 上,并将 文件的 url 返给前端,但还没有将文件的信息存在本地。这里建议前端接收到该url后,连同文件的其他数据(比如分类、文件名等)再请求后端的另外的接口,进行本地数据库的信息存储。

      三、问题说明

      可能会出现 The OSS Access Key Id you provided does not exist in our records 等问题,不要慌,重新生成一下就好了。

      以上就是详解PHP使用OSS上传文件的详细内容,更多关于PHP使用OSS的资料请关注自由互联其它相关文章!