【PHP】TP上传图片到OSS
CrazyPanda发表于:2024-03-23 18:21:38浏览:392次
准备:
php版本:7.4
tp版本:6.0
阿里云accessKeyId;
阿里云accessKeySecret;
阿里云存储bucket名称,如 examplebucket;
地域节点endpoint,如:oss-cn-hangzhou.aliyuncs.com;
1. 安装SDK
这里我们使用composer安装
composer require aliyuncs/oss-sdk-php
下载后composer.json文件里面显示
"aliyuncs/oss-sdk-php": "^2.7"
2. 上传文件到OSS
SDK提供了好几种上传文件的方法
直接上传文件对象
/** * Uploads a local file * * @param string $bucket bucket name * @param string $object object name * @param string $file local file path * @param array $options * @return array|null * @throws OssException|RequestCore_Exception */ public function uploadFile($bucket, $object, $file, $options = NULL)
上传文件内容
/** * Uploads object from file handle * * @param string $bucket bucket name * @param string $object object name * @param resource $handle file handle * @param array $options * @return array|null * @throws OssException|RequestCore_Exception */ public function uploadStream($bucket, $object, $handle, $options = NULL)
结合我们的业务需要,因为客户端直接上传的是文件对象,所有我们采用uploadFile方法。
uploadFile参数说明:
第一个参数bucket:存储空间bucket的名称
第二个参数object:存储文件的名称(原以为是文件对象,实际上是存储文件的名称,可以包含路径,比如 '2024/01/01/xxx.png')
第三个参数file:文件的本地路径,根据这个路径获取文件,并上传保存到第二个参数对应的文件
封装的上传文件类
<?php namespace app\service; use app\model\SysConfig; use OSS\Core\OssException; use OSS\OssClient; use think\facade\Log; class OssService { private $accessKeyId = ''; private $accessKeySecret = ''; private $bucket = ''; private $endpoint = ''; /** * 构造方法 * @access public * @param App $app 应用对象 */ public function __construct() { $this->accessKeyId = SysConfig::get('accessKeyId'); $this->accessKeySecret = SysConfig::get('accessKeySecret'); $this->bucket = SysConfig::get('bucket'); $this->endpoint = SysConfig::get('endpoint'); } /** * 上传文件 * @param $file_path 文件路径 * @param $file_name 文件名称 * @return mixed|string * @throws \OSS\Http\RequestCore_Exception */ public function save($file_path,$file_name) { try { //实例化 $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); //生成文件名 连接后缀 $save_name = date('Y').'/'.date('m').'/'.date('d') .'/'. $file_name; //Log::info($save_name); //执行阿里云上传 $result = $ossClient->uploadFile($this->bucket, $save_name, $file_path); //Log::info($result); if (!empty($result['info']['url'])) { return $result['info']['url']; } } catch (OssException $e) { //Log::info($e->getMessage()); } return ''; } }
上传文件接口
public function addImg($cid) { $file = $this->request->file('file'); $files = $_FILES['file']; $oss = new OssService(); $file_name = md5($file->getOriginalName()) . '.' . $file->getOriginalExtension(); $tmp_name = $files['tmp_name'];//上传文件的缓存路径 $url = $oss->save($tmp_name,$file_name); if (!empty($url)) { $this->success('成功',['url' => $url]); } else { $this->error('失败'); } }
已上就是本次tp使用阿里云SDK上传OSS的操作。
后记
原想只是一个简单上传,想要直接使用阿里云提供的API,但是API里面一些签名什么的还要花时间做,最终还是选择了使用SDK更快捷方便。
猜你喜欢
- 【PHP】RESTfulAPI详解
- 1. 什么是RESTfulAPIRESTful API 是一种互联网软件架构的设计规范,设计指南,设计风格,设计原则(类似于web标准,并不是标准【规范,原则】)2. 产生背景开始开发时,前后端高度融合(耦合) 近些年:前后端分离,前端各种客户端产生。基于这种现状,需要一个统一的机制。为前后端通信服务(API机制) 因此,前后端分离开来前后端基于API 开发,即:面向接口开发 前后端基于接口传递数据。 RESTfulAPI作为制定接口标准的规范而产生了。3. RESTful APIAPI简介:
- 【PHP】PHP面试题
- 1.详述一次完整的HTTP请求过程这个问题的核心是域名解析和服务器(nginx)解析这两部分,基本上这两部分详细阐述就可以了。步骤一、解析URL浏览器会解析当前的URL数据,判断此URL是否为合法的链接。如果是合法链接则正常的向下一步骤前进。如果不是合法的链接,则会执行搜索功能,例如执行百度、360、Google搜索等。步骤二、解析域名服务器是以ip的形式存在的。而域名需要解析到ip上,解析IP会有三个小的步骤:1)、从浏览器自身的缓存中解析此域名数据2)、从本地电脑的HOST文件中解析域名3)
- 【PHP】PHP8.1新特性大讲解之initializers初始化器
- PHP 8.1:初始化器(new in initializers)PHP 8.1 添加了一个看似很小的细节,但我认为它会对许多人产生重大的日常影响。那么这个“初始化器 RFC 中的新内容”是关于什么的?我们来看一个例子;我们都写过这样的代码:class MyStateMachine { public function __construct( &n
- 【PHP】什么是微服务架构
- 随着互联网的不断发展,越来越多的网站和应用程序应运而生。而对于开发者来说,如何快速高效地构建应用程序,是一个重要的挑战。其中,微服务架构已经成为了一个越来越受欢迎的解决方案。而php作为一种最受欢迎的web开发语言之一,也已经成为了很多开发者在构建微服务架构时的首选语言。本文将为大家介绍PHP如何应用于微服务架构,帮助大家更好地理解微服务架构以及如何使用PHP构建高效的微服务应用程序。什么是微服务架构?微服务架构(Microservices Architecture)是一种构建分布式应用程序的软
- 【PHP】linux系统php怎么安装curl扩展
- 有时候安装好php后,后面需要一些扩展需要添加进来,又不能影响当前php的工作,我们就只能通过动态添加扩展来实现。php安装curl扩展的方法:一.首先明确一些目录1.源码包目录,就是放从网上下载的源码包文件的目录,里面有下载的php,mysql,http等源码例如:/usr/local/src/ 2.PHP扩展包路径,就是PHP用来支持扩展服务的软件包,一般在php源码包的ext目录例如:/usr/local/src/php-7.0.12/ext/二. 开始动手安装1.安装curl
- 【PHP】PHP实现验证码的生成与验证
- PHP是一种常用的服务器端脚本语言,不仅功能强大,而且易于学习和编写。在网站开发中,验证码的生成与验证是非常重要的安全措施。在这篇文章中,我们将介绍如何使用PHP实现验证码的生成与验证。一、什么是验证码?验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写。它是一种常见的在线验证机制,用于确保用户是真正的人而不是机器人。
- 【PHP】TP使用Intervention\Image在图片上绘制矩形、文字
- 1. 在图片上绘制矩形use Intervention\Image\ImageManagerStatic as Image; public function drawRectangle() { $image = Image::make('path/to/your/image.jpg'); // 替换为你的图片路径 &
- 【PHP】php常用的第三方类库有哪些
- php常用的第三方类库有Laravel、Symfony、Guzzle、PHPUnit、Monolog、Swift Mailer、PHPExcel、Carbon、Doctrine、PHPMailer等。详细介绍:1、Laravel是一个流行的PHP框架,提供了丰富的功能和工具,用于快速构建Web应用程序,它包含了许多常用的类库,例如路由、数据库访问、模板引擎、身份验证等等。本教程操作系统:windows10系统、PHP 8.1.3版本、DELL G3电脑。在PHP开发中,有许多常用的第三
栏目分类全部>