需要下载php 的sdk包,注意路径问题
composer require aliyuncs/oss-sdk-php
前台页面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="oss.php" method="post" enctype="multipart/form-data">
<!--用户名:<input type="text" name="uname"><br><br>-->
请选择文件:<input type="file" name="filename"><br><br>
<input type="submit" value="点击上传">
</form>
</body>
</html>
后台控制器
/**
* 实例化阿里云OSS
* @return object 实例化得到的对象
* @return 此步作为共用对象,可提供给多个模块统一调用
*/
function newOss(){
//获取配置项,并赋值给对象$config
$config=config('aliyun_oss');
//实例化OSS
$oss=new \OSS\OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']);
return $oss;
}
/**
* 上传指定的本地文件内容
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @param string $object 上传的文件名称
* @param string $Path 本地文件路径
* @return null
*/
function uploadFile($bucket,$object,$Path){
//try 要执行的代码,如果代码执行过程中某一条语句发生异常,则程序直接跳转到CATCH块中,由$e收集错误信息和显示
try{
//没忘吧,new_oss()是我们上一步所写的自定义函数
$ossClient =$this->newOss();
//uploadFile的上传方法
$res= $ossClient->uploadFile($bucket, $object, $Path);
return json($res);
} catch(OssException $e) {
//如果出错这里返回报错信息
return $e->getMessage();
}
}
public function save(Request $request)
{
$file = request()->file('img');
// 移动到框架应用根目录/uploads/ 目录下
$info = $file->getInfo('tmp_name');
$arr = [];
if ($info) {
$fileName =$file->getInfo()['name'];
$re=$this->uploadFile('1803a', $fileName, $info);
$re = (array)$re;//对象转换成数组
//把所有value值取出并按照索引数组排列,取2是你上传的地址
var_dump(array_values($re)[2]["info"]['url']);
}
config目录app.php配置
'aliyun_oss' => [
'KeyId' => 'asdhjkasdhfkjsda', //您的Access Key ID
'KeySecret' => 'MKRz58BfuaXq6IK', //您的Access Key Secret
'Endpoint' => 'oss-cn-beijing.aliyuncs.com', //阿里云oss 外网地址endpoint
'Bucket' => 'jdfh', //Bucket名称
],
自己封装oss上传类库
Alyunoss.php
<?php
namespace app\common;
use OSS\Core\OssException;
class Alyunoss
{
/**
* 实例化阿里云OSS
* @return object 实例化得到的对象
* @return 此步作为共用对象,可提供给多个模块统一调用
*/
function newOss(){
//获取配置项,并赋值给对象$config
$config=config('aliyun_oss');
//实例化OSS
$oss=new \OSS\OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']);
return $oss;
}
/**
* 上传指定的本地文件内容
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @param string $object 上传的文件名称
* @param string $Path 本地文件路径
* @return null
*/
function uploadFile($bucket,$object,$Path){
//try 要执行的代码,如果代码执行过程中某一条语句发生异常,则程序直接跳转到CATCH块中,由$e收集错误信息和显示
try{
//没忘吧,new_oss()是我们上一步所写的自定义函数
$ossClient =$this->newOss();
//uploadFile的上传方法
$res= $ossClient->uploadFile($bucket, $object, $Path);
return json($res);
} catch(OssException $e) {
//如果出错这里返回报错信息
return $e->getMessage();
}
}
}
文件上传后台接收代码
//图片上传oss
$file = request()->file('img');
// 获取本地临时存放文件路径
$info = $file->getInfo('tmp_name');
if ($info){
$filename=$file->getinfo()['name'];
//实例化oss上传类
$oss=new Alyunoss();
$oss->uploadFile('weeks',$filename,$info);
//自己拼接图片oss访问地址
$imgurl='https://weeks.oss-cn-shanghai.aliyuncs.com/'.$filename;
} else {
// 上传失败获取错误信息
echo $file->getError();
}