日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 七牛云fetch,七牛云调用类

發布時間:2023/12/18 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 七牛云fetch,七牛云调用类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于thinkphp5.0.15, 可以擴展數據庫保存

自己了個七牛云調用類,用的是官方SDK 7.2.3 直接將文件放到Qinui里

將整個Qinui文件夾放到 extend 即可。

namespace Qiniu;

require "functions.php";

//use app\index\model\AdminImg;

use Qiniu\Storage\BucketManager;

use Qiniu\Storage\UploadManager;

use Think\Config;

/**

* 七牛云 使用類

*/

class Qnycn{

protected $accessKey ;//七牛云 訪問ID

protected $secretKey ;//七牛云 訪問密鑰

protected $bucket;//空間名

protected $url;//空間對應的網址

protected $imgUrlArray;//上傳返回的

/**

* 文件的前綴 以字母開頭 /結束 prefix 如: 'image/jpg/'

* 可以在構造函數中用用戶呢稱取得配置

*/

public $prefix='' ;

/**

* 圖片上傳配置,可在構造函數中從系統取值,不過就要去掉 static屬性

*/

static private $imgconfig=array(

'types' => '.gif|.jpeg|.png|.bmp|.jpg',//圖片類型

'size' => 2*1024*1024//文件大小 2M

);

/**

* 構造函數

* 自動的初始化密鑰和空間域名

* 可以在這里通過數據庫處理這些

* @param string $prefix

*/

public function __construct($prefix=null)

{

$this->accessKey = Config::get('appkey.qnyaccessKey');

$this->secretKey = Config::get('appkey.qnysecretKey');

$this->bucket = Config::get('appkey.qnybucket');

$this->url = Config::get('appkey.qnyurl');

if($prefix){

(substr($prefix,-1) == '/')? $prefix : $prefix.'/';

}

}

public function __get($name)

{

return $this->$name;

}

/**

* 我的想法是多張圖片上傳,將返回的圖片信息在最后保存到數據庫

* */

public function __destruct()

{

//trace('bb','aaa');

}

/**

* 網上抓取

* @access public

* @param string $url 網絡上的圖片地址

* @param string $suffix 文件后綴 默認JPG

* @return string $imgurl 圖片地址

*/

public function fetchImg($url,$suffix='jpg')

{

$auth = new Auth($this->accessKey, $this->secretKey);

$bucketManager = new BucketManager($auth);

$key=date('YmdHis').rand(10000, 99999).'.'.$suffix;

list($ret, $err) = $bucketManager->fetch($url, $this->bucket, $key);

if ($err == null) {

$this->saveToDB($ret['key']);

return $this->url.$ret['key'];

}

}

/**

* 取得上傳的Token

* @access public

* @param string $url 網絡上的圖片地址

* @param string $suffix 文件后綴 默認JPG

* @return string $imgurl 圖片地址

*/

public function authUploadToken()

{

//設置了回調地址,前端就不會返回值了。

$expires=array(

'returnBody'=>'{"key":"'.$this->url.'$(key)","hash":"$(etag)","fsize":$(fsize),"name":"$(x:name)"}',

'callbackUrl' => 'https://www.wyx2013.cn/wxapi/qiniucallback',

'callbackBody' => '{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)","user":"admin"}',

'callbackBodyType' => 'application/json'

);

$auth = new Auth($this->accessKey, $this->secretKey);

return $auth->uploadToken($this->bucket, null,600, $expires);//前端上傳,第三個參數為時間,不用太長

}

/**

* 圖片上傳

* @access public

* @param array $file 一個單圖就是$_FILES[key] 含以下信息

* ["name"]=> string(9) "TS 37.jpg"

* ["type"] => string(10) "image/jpeg"

* ["tmp_name"] => string(14) "/tmp/phpAuVNJu"

* ["error"] => int(0)

* ["size"] => int(423024)

* 如果是單圖上傳 $keys = array_keys($_FILES);

* $key=$keys[0];

* if($_FILES[$key]['error'] == 0)

* $CLASS->->uploadimg($_FILES[$key]);

*

* @return string $imgurl 圖片地址

*/

public function uploadimg($file)

{

$suffix=$this->checkimgfile($file['name'],$file['size']);

if($suffix){

$img=$this->uploadFile($file['tmp_name'],$suffix);

$imgurl=$this->url.$img;

$this->imgUrlArray[]=$img;

return $imgurl;//返回的是一張圖片的地址

}

}

/**

* 多圖上傳 適用于 multiple 一定要加上

*

* @access public

* @param string $file 中的name值 不包括[]

* @return array $imgurlarray 圖片地址數組

*/

public function uploadimgs($file='files')

{

$c=count($_FILES[$file]['error']);

for($i=0;$i

$suffix=$this->checkimgfile($_FILES[$file]['name'][$i],$_FILES[$file]['size'][$i]);

if($suffix){

$img=$this->uploadFile($_FILES[$file]['tmp_name'][$i],$suffix);

if($img){

$imgurlarray[]=$this->url.$img;

}

}

}

$this->saveToDB($imgurlarray);

return $imgurlarray;//調用此方法,返回的是數組

}

/**

* 文件刪除

* @access public

* @param string $key 圖片在空間的KEY值

* @return boolean 成功true 失敗 false

*/

public function delete($key='')

{

$auth = new Auth($this->accessKey, $this->secretKey);// 構建鑒權對象

$bucketMgr = new BucketManager($auth);//初始化BucketManager

$err = $bucketMgr->delete($this->bucket, $key);

return $err ? true : false ;

}

/**

* 文件列表

* @access public

* @param Boolean $c 值為真即返 回數組 為假返回總數量

* @return array or int

*/

public function listFiles($c = false )

{

$auth = new Auth($this->accessKey, $this->secretKey);// 構建鑒權對象

$bucketMgr = new BucketManager($auth);

$bucket=$this->bucket;

$prefix = 'image/jpg/';//前綴

$marker = '';//標記

$limit = 10000;//條數

$delimiter = '/';//指定目錄分隔符

list($iterms, $err) = $bucketMgr->listFiles($bucket, $prefix, $marker, $limit, $delimiter);

if ($err !== null) {

return false;//沒有文件返回空

} else {

if($c){ return $iterms; }else{ return count($iterms); }

}

}

/**

* 圖片檢測并返回后綴

* @access private

* @param string $name 圖片名

* @param int $size 圖片大小

* @return string $suffix圖片后綴

*/

public function checkimgfile($name,$size)

{

$suffix=pathinfo($name, PATHINFO_EXTENSION); //取得后綴

if(stripos(self::$imgconfig['types'],$suffix) && $size<:>

return $suffix;

}else{

return false;

}

}

/**

* 文件上傳

* @access private

* @param file $fileOjb 本地臨時文件地址

* @param string $suffix 文件后綴

* @return mixed 成功上傳 返回文件的名

*/

private function uploadFile($fileOjb,$suffix )

{

$auth = new Auth($this->accessKey, $this->secretKey);// 構建鑒權對象

$bucket = $this->bucket;// 要上傳的空間

$token = $auth->uploadToken($bucket);// 生成上傳 Token

$uploadMgr = new UploadManager();// 構建 UploadManager 對象

$key=date('YmdHis').rand(10000, 99999) . '.' . $suffix;//文件名 用時間命名

$key=empty($this->prefix) ? $key : $this->prefix.$key;

list($ret, $err) = $uploadMgr->putFile($token, $key, $fileOjb);//上傳

return ($err !== null)? false : $ret['key'];

}

/**

* 將圖片保存到表格里面

* @access private

* @param string array $img 單個圖片為或多個圖片名

* @return mixed

*/

private function saveToDB($img )

{

//$m=new AdminImg();

if(is_string($img)){

//$m->img=$img;

//$m->imgurl=$imgurl;

//$m->save();

}elseif(is_array($img)){

$url=$this->url;

foreach($img as $value){

$data[]=array('img'=>$value,'imgurl'=>$url.$value);

}

//$m->saveAll($data);

}

}

}

這里只封裝了部分功能

上傳文件

返回值為[{"suc":"http:// xample.com/2018033122531446150.png"},{"suc":"xxxx"}]

public function ajaxuploadimgs()

{

if ( !empty($_FILES) ) {

$q = new Qnycn();

foreach ($_FILES as $key=>$file){

if ($file['error'] !== 0) {

continue;

} else {

$imgurl = $q->uploadimg($file,$key);

if($imgurl){

$c[] = array('suc'=>$imgurl);

}else{

$c = array('err'=>'七牛云上傳失敗');

}

}

}

return json_encode($c);

}

return false;

}

如果是多個圖片上傳會產生一個問題,會調用多次類,可以將調用方也寫到Qnycn的類里面。

附上jQuery上傳代碼。

$(document).ready(function(){

$("#ajaxfiles").change(function() {

var paths = document.getElementById("ajaxfiles").files;

var formData=new FormData();

for(var i=0;i

//將每個文件設置一個string類型的名字,放入到formData中,這里類似于setAttribute("",Object)

formData.append(paths[i].name,paths[i]);

}

$.ajax({

url: "/admin/ajaxuploadimgs",

type: 'POST',

data: formData,

dataType:"json",

processData: false,

contentType: false,

success: function (date) {

$.each(date, function(i, item){

if(item.suc){

alert(tem.suc);

}else {

alert(item.err);

}

});

}

});

});

});

總結

以上是生活随笔為你收集整理的php 七牛云fetch,七牛云调用类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。