laravel之Qiniu
来源:互联网 发布:xp网络共享一键设置 编辑:程序博客网 时间:2024/06/04 18:17
前提:搭建好laravel运行环境
准备工作:Qiniu官方网站下载php版本的jdk
下载js版本的jdk
(官方网址: http://developer.qiniu.com/download/index.html)
vendor文件夹下的qiniu文件夹放到laravel的vendor文件夹内
根据qiniu官方vendor内部的composer配置,配置laravel的vendor中的composer
laravel:app文件夹下面建立Contracts(接口), Services(实现接口),文件夹
配置所需参数
config/cdn.php
<?php
return [
'qiniu' => [
'domain' => '7xp26c.com1.z0.glb.clouddn.com',
'access_key' => 'peI4rQd3L612TsXq8dQBRGfeYc4g9iuHnY_WqRnU',
'secret_key' => '43kCFazP_Wigavd00yO11Y0Pp1aR42QWDDDf4o3i',
'bucket' => 'archist-test',
],
];
(1)定义接口
Contracts/Cdn/CdnProvider.php:
<?php
namespace App\Contracts\Cdn;
interface CdnProvider
{
public function getResourceUrl($key, array $size = null);
public function getCdnMogr2Resource($key, array $size = null);
}
(2)实现接口
Services/Qiniu.php
<?php
namespace App\Services;
use App\Contracts\Cdn\CdnProvider;
use Qiniu\Auth;
class Qiniu implements CdnProvider
{
private $domain;
private $accessKey;
private $secretKey;
private $bucket;
public function __construct($domain)
{
$this->domain = $domain;
}
public function setDomain($domain)
{
$this->domain = $domain;
}
public function setAccessKey($accessKey)
{
$this->accessKey = $accessKey;
}
public function setSecretKey($secretKey)
{
$this->secretKey = $secretKey;
}
public function setBucket($bucket)
{
$this->bucket = $bucket;
}
public function getResourceUrl($key, array $size = null)
{
$keyEsc = str_replace('%2F', '/', rawurlencode($key));
if ('/' == $keyEsc[0] || '@' == $keyEsc[0]) {
$keyEsc = '@' . $keyEsc;
}
$imageview = '';
if ($size) {
$imageview = 'imageView2';
if (isset($size['mode'])) {
$imageview .= '/' . $size['mode'];
} else {
$imageview .= '/1';
}
if (isset($size['width'])) {
$imageview .= '/w/'. $size['width'];
}
if (isset($size['height'])) {
$imageview .= '/h/'. $size['height'];
}
}
return "http://{$this->domain}/{$keyEsc}?{$imageview}";
}
public function getCdnMogr2Resource($key, array $size = null) {
$keyEsc = str_replace('%2F', '/', rawurlencode($key));
if ('/' == $keyEsc[0] || '@' == $keyEsc[0]) {
$keyEsc = '@' . $keyEsc;
}
$imageview = '';
if ($size && (isset($size['width']) || isset($size['height']))) {
$imageview = 'imageMogr2';
$mode = isset($size['mode']) ? $size['mode'] : 'thumbnail';
$width = isset($size['width']) ? $size['width'] : '';
$height = isset($size['height']) ? $size['height'] : '';
$gravityType = isset($size['gravity_type']) ? $size['gravity_type'] : 'center';
$imageview .= '/' . $mode . '/!'. $width . 'x'. $height . 'r' . '/gravity/'. $gravityType .
'/crop/' . $width . 'x'. $height;
}
return "http://{$this->domain}/{$keyEsc}?{$imageview}";
}
public function getUptoken($bucket = false)
{
if (!$bucket) {
$bucket = $this->bucket;
}
if (!$bucket) {
throw new \InvalidArgumentException('bucket is required');
}
$auth = new Auth($this->accessKey, $this->secretKey);
return $auth->uploadToken($bucket);
}
public function getAuth()
{
return new Auth($this->accessKey, $this->secretKey);
}
Providers/AppServiceProvider.php
public function register()
{
$this->app->singleton('cdn', function () {
$domain = config('cdn.qiniu.domain');
$cdn = new Qiniu($domain);
$cdn->setAccessKey(config('cdn.qiniu.access_key'));
$cdn->setSecretKey(config('cdn.qiniu.secret_key'));
$cdn->setBucket(config('cdn.qiniu.bucket'));
return $cdn;
});
}
前台引入js:jquery->plupload.full.min.js(Moxie.swf)->qiniu.min.js->自定义.js
$(function() {
var containerUploader = Qiniu.uploader({
runtimes: 'html5,flash,html4',
browse_button: 'avator',
container: 'avator-wrapper',
dragdrop: true,
drop_element: 'avator-wrapper',
max_file_size: '10mb',
flash_swf_url: 'Moxie.swf',
chunk_size: '4mb',
//route定义:Route::controllers(['cdn' => 'QiniuCdnController']);
uptoken_url: '/cdn/uptoken',
domain: '7xp26c.com1.z0.glb.clouddn.com',
get_new_uptoken: false,
unique_names: true,
auto_start: true,
multi_selection: false,
filters: {
mime_types: [
{
title : 'Image files',
extensions : 'jpg,jpeg,gif,png'
}
]
},
init: {
FilesAdded: function (up, files) {
},
FileUploaded: function (up, file, info) {
var domain = up.getOption('domain'),
result = $.parseJSON(info),
sourceLink = 'http://' + domain + '/' + result.key;
$('#avator').attr('src', sourceLink);
},
Error: function (up, err, errTip) {
$.notify(errTip);
}
}
});
});
准备工作:Qiniu官方网站下载php版本的jdk
下载js版本的jdk
(官方网址: http://developer.qiniu.com/download/index.html)
vendor文件夹下的qiniu文件夹放到laravel的vendor文件夹内
根据qiniu官方vendor内部的composer配置,配置laravel的vendor中的composer
laravel:app文件夹下面建立Contracts(接口), Services(实现接口),文件夹
配置所需参数
config/cdn.php
<?php
return [
'qiniu' => [
'domain' => '7xp26c.com1.z0.glb.clouddn.com',
'access_key' => 'peI4rQd3L612TsXq8dQBRGfeYc4g9iuHnY_WqRnU',
'secret_key' => '43kCFazP_Wigavd00yO11Y0Pp1aR42QWDDDf4o3i',
'bucket' => 'archist-test',
],
];
(1)定义接口
Contracts/Cdn/CdnProvider.php:
<?php
namespace App\Contracts\Cdn;
interface CdnProvider
{
public function getResourceUrl($key, array $size = null);
public function getCdnMogr2Resource($key, array $size = null);
}
(2)实现接口
Services/Qiniu.php
<?php
namespace App\Services;
use App\Contracts\Cdn\CdnProvider;
use Qiniu\Auth;
class Qiniu implements CdnProvider
{
private $domain;
private $accessKey;
private $secretKey;
private $bucket;
public function __construct($domain)
{
$this->domain = $domain;
}
public function setDomain($domain)
{
$this->domain = $domain;
}
public function setAccessKey($accessKey)
{
$this->accessKey = $accessKey;
}
public function setSecretKey($secretKey)
{
$this->secretKey = $secretKey;
}
public function setBucket($bucket)
{
$this->bucket = $bucket;
}
public function getResourceUrl($key, array $size = null)
{
$keyEsc = str_replace('%2F', '/', rawurlencode($key));
if ('/' == $keyEsc[0] || '@' == $keyEsc[0]) {
$keyEsc = '@' . $keyEsc;
}
$imageview = '';
if ($size) {
$imageview = 'imageView2';
if (isset($size['mode'])) {
$imageview .= '/' . $size['mode'];
} else {
$imageview .= '/1';
}
if (isset($size['width'])) {
$imageview .= '/w/'. $size['width'];
}
if (isset($size['height'])) {
$imageview .= '/h/'. $size['height'];
}
}
return "http://{$this->domain}/{$keyEsc}?{$imageview}";
}
public function getCdnMogr2Resource($key, array $size = null) {
$keyEsc = str_replace('%2F', '/', rawurlencode($key));
if ('/' == $keyEsc[0] || '@' == $keyEsc[0]) {
$keyEsc = '@' . $keyEsc;
}
$imageview = '';
if ($size && (isset($size['width']) || isset($size['height']))) {
$imageview = 'imageMogr2';
$mode = isset($size['mode']) ? $size['mode'] : 'thumbnail';
$width = isset($size['width']) ? $size['width'] : '';
$height = isset($size['height']) ? $size['height'] : '';
$gravityType = isset($size['gravity_type']) ? $size['gravity_type'] : 'center';
$imageview .= '/' . $mode . '/!'. $width . 'x'. $height . 'r' . '/gravity/'. $gravityType .
'/crop/' . $width . 'x'. $height;
}
return "http://{$this->domain}/{$keyEsc}?{$imageview}";
}
public function getUptoken($bucket = false)
{
if (!$bucket) {
$bucket = $this->bucket;
}
if (!$bucket) {
throw new \InvalidArgumentException('bucket is required');
}
$auth = new Auth($this->accessKey, $this->secretKey);
return $auth->uploadToken($bucket);
}
public function getAuth()
{
return new Auth($this->accessKey, $this->secretKey);
}
}
Providers/AppServiceProvider.php
public function register()
{
$this->app->singleton('cdn', function () {
$domain = config('cdn.qiniu.domain');
$cdn = new Qiniu($domain);
$cdn->setAccessKey(config('cdn.qiniu.access_key'));
$cdn->setSecretKey(config('cdn.qiniu.secret_key'));
$cdn->setBucket(config('cdn.qiniu.bucket'));
return $cdn;
});
}
前台引入js:jquery->plupload.full.min.js(Moxie.swf)->qiniu.min.js->自定义.js
$(function() {
var containerUploader = Qiniu.uploader({
runtimes: 'html5,flash,html4',
browse_button: 'avator',
container: 'avator-wrapper',
dragdrop: true,
drop_element: 'avator-wrapper',
max_file_size: '10mb',
flash_swf_url: 'Moxie.swf',
chunk_size: '4mb',
//route定义:Route::controllers(['cdn' => 'QiniuCdnController']);
uptoken_url: '/cdn/uptoken',
domain: '7xp26c.com1.z0.glb.clouddn.com',
get_new_uptoken: false,
unique_names: true,
auto_start: true,
multi_selection: false,
filters: {
mime_types: [
{
title : 'Image files',
extensions : 'jpg,jpeg,gif,png'
}
]
},
init: {
FilesAdded: function (up, files) {
},
FileUploaded: function (up, file, info) {
var domain = up.getOption('domain'),
result = $.parseJSON(info),
sourceLink = 'http://' + domain + '/' + result.key;
$('#avator').attr('src', sourceLink);
},
Error: function (up, err, errTip) {
$.notify(errTip);
}
}
});
});
1 0
- laravel之Qiniu
- laravel与qiniu的结合插件
- laravel + qiniu 图片音频上传存储
- qiniu
- paperclip-qiniu
- Laravel学习之Composer安装Laravel
- laravel框架之视图
- Laravel使用之旅
- Laravel使用之旅
- Laravel之October Themes
- Laravel 之October Pages
- laravel之发送邮件
- laravel之模板使用
- Laravel 之Service Providers
- laravel之助手函数
- laravel之批量删除
- laravel之文件上传
- laravel之ajax搜索
- windows环境下通过Eclipse下载hdfs中的文件中遇到的问题
- Feature Matching
- ASP.NET应用程序与页面生命周期
- 关于Linux连接Oracle数据库报错Caused by: java.sql.SQLRecoverableException: IO Error: Connection timed out的解决方案
- 反转输出字符串
- laravel之Qiniu
- iOS推送
- GoogleAPI Adwords Budget
- UISwitch
- UILabel 调整行间距
- 字符串大小写转换(三种方法)
- java.lang.OutOfMemoryError: Java heap space
- linux非阻塞的socket EAGAIN的错误处理
- CodeForces 615A Bulbs