我是靠谱客的博主 温婉学姐,最近开发中收集的这篇文章主要介绍PHP+Laravel5.7 使用阿里OSS+阿里媒体处理上传图片/视频文件阿里OSS官方后台创建存储空间,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Laravel 使用阿里OSS+阿里媒体处理-阿里OSS官方后台配置
- 阿里OSS官方后台创建存储空间
- 第一步:准备工作
- 以上就是Laravel 5.7 +php 使用阿里官方上传SDK和composer下载的阿里媒体处理拓展的详细使用方法。
阿里OSS官方后台创建存储空间
第一步:准备工作
登录阿里OSS控制台
- 创建OSS存储空间
- 按步骤创建一个OSS存储空间
- 创建媒体处理MPS
- 使用composer 执行安装阿里OSS拓展命令:composer require aliyuncs/oss-sdk-php;按下“回车键”等待安装完毕;
(本人使用的是phpStom编辑器)
- 安装阿里媒体处理拓展:composer require obacm/aliyun-openapi-mts;(按下回车键等待安装完毕)
- 上传文件到OSS代码(这里使用的是官方php上传SDK)
//OSS上传控制器
public function OssUploadFile(Request $request)
{
$accessKeyId = "你的accessKeyId ";
$accessKeySecret = "你的 accessKeySecret ";
// Endpoint以北京为例,其它Region请按实际情况填写。(‘’http://阿里OSS存储空间概览—>外网访问)
$endpoint = "http://oss-cn-beijing.aliyuncs.com";
// 存储空间名称
$bucket = "你的bucket名称";
//前端inupt表单的名称
$file_name_A = 'file_video';
//laravel 获取上传文件
$tmpFile_A = $request->file($file_name_A);
//生成上传OSS后的路径+文件名(注意:路径禁止以"/"开头)
$object_A = 'aa/'.date("Y_M_D_H_M_S") . '.' . $tmpFile_A->getClientOriginalExtension();
// 获取临时文件
$filePath_A = $tmpFile_A->getPath() . '/' . $tmpFile_A->getFilename();
//OssClient
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$info_A = $ossClient->uploadFile($bucket, $object_A, $filePath_A);//为了获取上传后的文件信息
//判断是否上传成功 $info_A['oss-request-url'] :得到上传后的OSS访问地址
if($info_A['oss-request-url']){
#上传成功
var_dump('上传成功');
die();
}else{
#上传失败
var_dump('上传失败');
die();
}
}
7使用OSS上传+转码功能(上传代码就是上面的第6步);
//OSS上传控制器
public function OssUploadFile(Request $request)
{
$accessKeyId = "你的accessKeyId ";
$accessKeySecret = "你的accessKeySecret ";
// Endpoint以北京为例,其它Region请按实际情况填写。
$endpoint = "http://oss-cn-beijing.aliyuncs.com";
// 存储空间名称
$bucket = "bingtanghulu";
//前端inupt表单的名称
$file_name_A = 'file_video';
//laravel 获取上传文件
$tmpFile_A = $request->file($file_name_A);
//生成上传OSS后的路径+文件名(注意:路径禁止以"/"开头)
$object_A = 'aa/'.date("Y_M_D_H_M_S") . '.' . $tmpFile_A->getClientOriginalExtension();
// 获取临时文件
$filePath_A = $tmpFile_A->getPath() . '/' . $tmpFile_A->getFilename();
//OssClient
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$info_A = $ossClient->uploadFile($bucket, $object_A, $filePath_A);//为了获取上传后的文件信息
//判断是否上传成功
if($info_A['oss-request-url']){
#上传成功
//dd('上传成功');
#调用转码
$this->OssMts($object_A);
}else{
#上传失败
dd('上传失败');
}
}
/**
* 阿里云媒体处理—转码
* 2019/10/13/22:20
* @param $oss_input_object_name :OSS中需要转码的文件名,如'Test/input_video001.mp4'
*/
private function OssMts($oss_input_object_name){
#转码公共参数配置区域
$access_key_id = '你的accessKeyId';
$access_key_secret = '你的access_key_secret ';
//您需要操作的OSS存储空间的所在地,例如'cn-beijign'表示‘中国北京’
$mps_region_id = 'cn-beijing';
$pipeline_id = '你的管道ID';//管道ID(//您的案例媒体处理控制台->全局设置->管道->管道ID)
$template_id = 'S00000001-200010';//模板ID(官方文档Deom中默认,你自己在媒体处理->全局设置->转码模板中自己创建一个也可以,不会的创建就用官方Demo给的这个,或自行科普)
$oss_location = 'oss-cn-beijing';//您需要操作的OSS存储空间的所在地就是OSS存储空间概览->外网访问EndPoint(地域节点)的前缀,(我的是北京,所以写'oss-cn-beijing')
$oss_bucket = '你的bucket名称';//你的Oss存储空间bucket名称
//待转码文件(前面上传方法成功后,调用转码方法传进来的参数)
$oss_input_object = $oss_input_object_name;
//转码完毕后输出的文件名(你也可以自己加路径,例如:‘test/2020-02-11/output.mp4’ Oss存储空间会根据你的就路径自己创建相关文件层级,切记文件路径开头不能使用‘/’或者‘’开头,这个oss手动创建文件夹时会有提示)
$oss_output_object = 'output.mp4';
$clientProfile = DefaultProfile::getProfile(
$mps_region_id, # 您的 Region ID
$access_key_id, # 您的 AccessKey ID
$access_key_secret # 您的 AccessKey Secret
);
//开始执行转码步骤
$client = new DefaultAcsClient($clientProfile);
# 创建API请求并设置参数
$request = new SubmitJobsRequest();
$request->setAcceptFormat('JSON');
# Input 输入待转码的OSS文件
$input = [
'Location' => $oss_location,
'Bucket' => $oss_bucket,
'Object' => urlencode($oss_input_object)
];
$request->setInput(json_encode($input));
# Output 输出转码完毕的OSS文件
$output = [
'OutputObject' => urlencode($oss_output_object)
];
# Ouput->Container 转码完毕后的格式
$output['Container'] = array('Format' => 'mp4');
# Ouput->Video 输入视频配置
//本数组中的参数value 根据你的实际需求自己定义
$output['Video'] = [
'Codec' =>'H.264',//编码格式
'Bitrate' => 1500,//比特率/码率
'Width' => 1280,//视频宽度
'Fps' => 25//视频每秒帧数
];
# Ouput->Audio 输入音频配置
//本数组中的参数value 根据你的实际需求自己定义
$output['Audio'] = [
'Codec' => 'AAC',//解码器
'Bitrate' => 128,//比特率
'Channels' => 2,//频道
'Samplerate' => 44100//抽样率
];
# Ouput->TemplateId //输入模板化
$output['TemplateId'] = $template_id;
$outputs = array($output);
#设置输出
$request->setOUtputs(json_encode($outputs));
#设置输入OSS_Bucket名称
$request->setOutputBucket($oss_bucket);
#设置输入OSS_所在地
$request->setOutputLocation($oss_location);
# PipelineId 设置转码管道ID
$request->setPipelineId($pipeline_id);
# 发起请求并处理返回
$response = $client->getAcsResponse($request);
//判断转码是否成功
if($response->{'JobResultList'}->{'JobResult'}[0]->{'Success'}){
#转码成功
//删除未转码的源文件
//拼接完成转码的文件路径并更新数据库
}else{
#转码失败
'SubmitJobs Failed code:' .
$response->{'JobResultList'}->{'JobResult'}[0]->{'Code'} .
' message:' .
$response->{'JobResultList'}->{'JobResult'}[0]->{'Message'} . "n";
}
# 发起请求并处理返回,下面这点捕获异常根据你的需求要不要都行,这个就是让你看报错和返回值的。
try {
$response = $client->getAcsResponse($request);
print 'RequestId is:' . $response->{'RequestId'} . "n";
//RequestId is:9EF6A44A-7568-407F-B48C-A6A840C83ECE JobId is:5328efd028dc458da5c5fdb9bee7a245 这个是返回值
if ($response->{'JobResultList'}->{'JobResult'}[0]->{'Success'}) {
print 'JobId is:' .
$response->{'JobResultList'}->{'JobResult'}[0]->{'Job'}->{'JobId'} . "n";
} else {
print 'SubmitJobs Failed code:' .
$response->{'JobResultList'}->{'JobResult'}[0]->{'Code'} .
' message:' .
$response->{'JobResultList'}->{'JobResult'}[0]->{'Message'} . "n";
}
} catch(ServerException $e) {
print 'Error: ' . $e->getErrorCode() . ' Message: ' . $e->getMessage() . "n";
} catch(ClientException $e) {
print 'Error: ' . $e->getErrorCode() . ' Message: ' . $e->getMessage() . "n";
}
}
以上就是Laravel 5.7 +php 使用阿里官方上传SDK和composer下载的阿里媒体处理拓展的详细使用方法。
注意上述代码中有很多配置项,例如accessKeyId 和accessKeyId 等这些我在演示中没有进行封装,在实际生产中,我会把这些信息封装到config中。在使用laravel辅助函数config(‘key’) 进行调用!
最后
以上就是温婉学姐为你收集整理的PHP+Laravel5.7 使用阿里OSS+阿里媒体处理上传图片/视频文件阿里OSS官方后台创建存储空间的全部内容,希望文章能够帮你解决PHP+Laravel5.7 使用阿里OSS+阿里媒体处理上传图片/视频文件阿里OSS官方后台创建存储空间所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复