本文目錄一覽:
- 1、thinkphp5 有自帶七牛上傳圖片的驅動嗎 ?有的話怎麼應用 !
- 2、如何將圖片上傳到七牛雲平台?
- 3、php表單上傳圖片到七牛雲存儲並返回地址……求具體流程~有代碼更好
- 4、php裡面使用Yii2框架用七牛上傳圖片怎麼上傳不上去
- 5、ueditor1.4.3 php如何上傳圖片到圖片伺服器(七牛)
thinkphp5 有自帶七牛上傳圖片的驅動嗎 ?有的話怎麼應用 !
七牛的上傳其實就很簡單
我舉例下七牛上傳配置
‘qiniu’ = [
‘maxSize’ = 5 * 1024 * 1024,//文件大小
‘rootPath’ = ‘./’,
‘saveName’ = [‘uniqid’, ”],
‘driver’ = ‘Qiniu’,
‘driverConfig’ = [
‘secretKey’ = ”,
‘accessKey’ = ”,
‘domain’ = ”,
‘bucket’ = ”,
]
]
控制器處理
// 實例化上傳類
$upload = new Upload(C(‘qiniu’));
$info = $upload-uploadOne($file);
$this-ajaxReturn($info);
這是上傳的處理
其實七牛的驅動裡面也是集成了很多
我們可以直接實例化七牛
$qiniu = new QiniuStorage(C(‘qiniu.driverConfig’));
看好實例化裡面的是七牛的配置文件 因為不是直接用的配置
然後就可以調用七牛的方法
$qiniu -SomeFunction();
更多問題可以去php中文網問答社區
如何將圖片上傳到七牛雲平台?
上一篇文章介紹了「如何將圖片上傳到Cloudinary雲平台?」
但是由於Cloudinary的伺服器在國外,所以上傳和讀取圖片的速度會很慢,不適合用作生產,因此有必要再介紹一下國內廣受歡迎的「七牛」雲平台。以及分步驟給大家介紹如何使用七牛。
各位可以使用我的邀請鏈接註冊:
拜託!!!
我們這裡添加的對象存儲空間叫做「gougouavatar」
其中的ACCESS_KEY和SECRET_KEY兩個參數來自於「個人中心」的「秘鑰管理」模塊:
_getQiniuToken()返回一個封裝promise函數,這個函數調用了後台生成簽名演算法的介面;
這個函數的回調里拿到了後台生成的key和其他參數;
最後調用_upload方法向七牛的上傳圖片的介面地址: ,發送請求,上傳圖片;
最後的響應參數response.key即為圖片上傳成功之後的地址。
如:deae507d-73fd-4489-9d7f-d5fa275bcbe5.jpeg
想要訪問該圖片,還需拼接上七牛提供的測試域名:
經過測試,使用七牛進行上傳的速度確實很快,比國外的cloudinary要快上好幾倍,使用體驗還是很不錯的,大家可以放心使用。
php表單上傳圖片到七牛雲存儲並返回地址……求具體流程~有代碼更好
有的,我最近研究了一下,寫了一篇記錄,如下
原文地址:
網上關於七牛雲存儲的教程除了官網上的API文檔,其他的資料太少了。研究了下API之後,現在已經能實現圖片的上傳和下載及上傳之後的重定向。
首先本篇文章實現的功能如下:
1.利用表單上傳功能,用戶可以點擊選擇文件按鈕,選擇本地的一個文件,同時設定上傳的圖片的名稱,點擊上傳按鈕可以上傳並存儲到七牛雲存儲。
2.在點擊上傳時會檢測文件的後綴名,限制為jpg和png格式存儲。
3.上傳成功後跳轉到自己設定的一個URL,並傳迴文件信息,如文件名。而不是顯示七牛白花花的json顯示頁面。
好啦,那我們開始吧,首先我們要有一個七牛雲存儲賬號,如果沒有的就自己去申請吧。
七牛雲存儲傳送門:
一.SDK下載
戳這個網址下載一下SDK吧,裡面封裝了文件上傳下載等等的方法,我們引入之後可以直接調用。
SDK之中有一個qiniu的文件夾,這是所有的SDK實貨,這個是最重要的。我們首先要把這個文件夾及裡面的文件放到項目文件夾中,比如我放到這裡。
大家可以看到有一個qiniu文件夾。好啦,資源支持就是這樣。接下來我們要實現代碼咯。
二.文件的上傳。
1.首先把你七牛雲存儲的密鑰照出來,點擊賬號設置可以看到有一個AccessKey和SecretKey,留著備用。
2.上傳憑證生成。
在這裡我們首先要引入rs.php文件,自己找一對應路徑,代碼如下:
require_once(dirname(__FILE__).”/../../qiniu/rs.php”);
dirname()是指的絕對路徑,有時相對路徑會出現問題,建議在前面加上dirname方法獲取絕對路徑。
require_once是引入文件,表示該文件只引入一次。
然後,傳入你的AccessKey和SecretKey
代碼如下:
$accessKey = ‘Imn35KC5pRX7Ov3scxbYkvNk6oIx7zWsBRp16’; //換成你自己的密鑰
$secretKey = ‘s29vc9tlCvs23wRh7QScYTuzCDmEroKj1ddssz’; //換成你自己的密鑰
Qiniu_SetKeys($accessKey, $secretKey);
然後建一個上傳策略對象,將你的bucket 傳入,bucket 就是你的空間名。
$bucket = ‘designpartners’;
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
然後調用此方法來生成上傳憑證。
$upToken = $putPolicy-Token(null);
接下來就寫一個html表單
form method=”post” action=”” name = “form” enctype=”multipart/form-data”
ul
input type=”hidden” id=”token” name=”token” value=?php echo $upToken?
li
label for=”key”key:/label
input name=”key” value=””
/li
li
label for=”bucket”照片:/label
input name=”file” type=”file” /
/li
li
input type=”submit” value=”提交”
/li
/ul
/form
action 就填寫 up.qiniu.com,表單提供了一個輸入框key,用來輸入你想保存的圖片名稱,上傳到七牛之後就是這個名字。
然後一個文件選擇,一個提交按鈕。運行結果如下:
輸入key值和選擇照片即可實現照片的上傳。哈哈哈有沒有很簡單。
三、文件下載
原理和文件上傳功能相仿。
引入文件
require_once(dirname(__FILE__).”/../../qiniu/rs.php”);
聲明你的七牛雲存儲域名和兩個密鑰以及向下載的文件名稱
$key = ‘00000’;
$domain = ‘designpartners.qiniudn.com’;
$accessKey = ‘IOImn35KC5p3scxbYkvNk6oIxB7zWsBRp16’;
$secretKey = ‘s29vc9tlCvs23wCDmIbUSi4EroKj1z’;
注意:1.key值即為文件名,不要加後綴
2.domain即為bucket加上qiniudn.com,例子中的designpartners就是我在上傳圖片時用的bucket名。
3.accessKey和secretKey換成你自己的,直接用我的不行的..因為我修改了.
Qiniu_SetKeys($accessKey, $secretKey);
$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
$getPolicy = new Qiniu_RS_GetPolicy();
$privateUrl = $getPolicy-MakeRequest($baseUrl, null);
echo $privateUrl . “\n”;
傳入這四個值即可生成一樣url,直接訪問url即可實現圖片的下載。
在引入圖片時直接
img src = “?php echo $privateUrl; ?”/
即可引入圖片咯,很簡單的吧。
四、303重定向
在上面的方法中,我們上傳圖片成功後跳轉到up.qiniu.com下,會顯示白白的網頁,顯示一個json字元串,但是在實際網站開發中我們肯定 不能讓用戶看到這種網頁,所以我們用到了303跳轉。SDK中也為我們封裝了這個方法。使用其實非常簡單。在上傳文件的代碼中添加兩行代碼即可
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$putPolicy-ReturnUrl = site_url().”/upload/receiveInfo”;
$putPolicy-ReturnBody='{“key”: $(key)}’;
注意:1. ReturnUrl和ReturnBody必須指定,並且首字母要大寫,很多人都小寫開頭,這樣會跳轉不成功。
2.ReturnUrl必須是一個公網可以訪問的網址,在本地測試是不可能通過的。比如你寫成localhost,七牛伺服器是定位不到的。
3.這個ReturnUrl的鏈接後會跟著一個?upload_ret=XXX,可以用get方法獲取這個upload_ret。upload_ret的內容是base64安全編碼的json形式的key值。
值的解析:比如我上傳的文件名是555
upload/receiveInfo?upload_ret=eyJrZXkiOiAiNTU1In0=
網址後綴如上所示,把那個upload_ret複製下來,用base64解碼可以出現如下結果:
{“key”: “555”}
所以,我們要獲取555這個值的代碼如下,即解析代碼如下:
$upload_ret = $_GET[‘upload_ret’];
$json_ret = base64_decode($upload_ret);
$result=json_decode($json_ret);
echo “key”.$result-key;
好啦,獲取到這個key值之後,你可以選擇存到資料庫或者進行其他的操作咯。
五、上傳前文件類型的驗證
我們可以用js來驗證文件的後綴名,
在form的屬性里加上
onsubmit=”return isValidateFile(‘file’);”
加上一個js方法
script
function isValidateFile(obj) {
var extend = document.form.file.value.substring(document.form.file.value.lastIndexOf(“.”) + 1);
if (extend == “”) {
alert(“請選擇頭像”);
return false;
}
else {
if (!(extend == “jpg” || extend == “png”)) {
alert(“請上傳後綴名為jpg或png的文件!”);
return false;
}
}
return true;
}
/script
即可驗證它的類型是否合法。
附:CI代碼實現:
獲取Uptoken:
function getUptoken(){
require_once(dirname(__FILE__).”/../../qiniu/rs.php”);
//遠程存儲空間名稱
$bucket = ‘designpartners’;
$accessKey = ‘IOImn35KCRX7Ov3scvNk6oIxB7zWsBRp16’;
$secretKey = ‘s29vc9tlCvs23wRhTuzCDmIbUSi4EroKj1z’;
Qiniu_SetKeys($accessKey, $secretKey);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
echo site_url();
$putPolicy-ReturnUrl = site_url().”/upload/receiveInfo”;
$putPolicy-ReturnBody='{“key”: $(key)}’;
$upToken = $putPolicy-Token(null);
return $upToken;
}
文件上傳:
public function uploadPic(){
$upToken = $this-getUptoken();
$data[‘upToken’] = $upToken;
$this-load-view(‘upload’,$data);
}
303重定向解析:
public function receiveInfo(){
$upload_ret = $_GET[‘upload_ret’];
$json_ret = base64_decode($upload_ret);
$result=json_decode($json_ret);
echo “key”.$result-key;
}
文件下載:
public function downloadPic(){
require_once(dirname(__FILE__).”/../../qiniu/rs.php”);
$key = ‘00000’;
$domain = ‘designpartners.qiniudn.com’;
$accessKey = ‘IOImn35KC57Ov3scxbYkvNk6oIxB7zWsBRp16’;
$secretKey = ‘s29vc9tlCvsh7QScYTuzCDmIbUSi4EroKj1z’;
Qiniu_SetKeys($accessKey, $secretKey);
$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
$getPolicy = new Qiniu_RS_GetPolicy();
$privateUrl = $getPolicy-MakeRequest($baseUrl, null);
echo “==== getPolicy result: \n”;
echo $privateUrl . “\n”;
}
表單:
script
function isValidateFile(obj) {
var extend = document.form.file.value.substring(document.form.file.value.lastIndexOf(“.”) + 1);
if (extend == “”) {
alert(“請選擇頭像”);
return false;
}
else {
if (!(extend == “jpg” || extend == “png”)) {
alert(“請上傳後綴名為jpg或png的文件!”);
return false;
}
}
return true;
}
/script
form method=”post” action=”” name = “form” enctype=”multipart/form-data” onsubmit=”return isValidateFile(‘file’);”
ul
input type=”hidden” id=”token” name=”token” value=?php echo $upToken?
li
label for=”key”key:/label
input name=”key” value=””
/li
li
label for=”bucket”照片:/label
input name=”file” type=”file” /
/li
li
input type=”submit” value=”提交”
/li
/ul
/form
php裡面使用Yii2框架用七牛上傳圖片怎麼上傳不上去
你的第二、三參數傳的對嗎?
我用的類方法參數是:PutFile($upToken, $key, $localFile, $putExtra),請按照方法里的參數順序重新審一下。
希望能幫助到你。
ueditor1.4.3 php如何上傳圖片到圖片伺服器(七牛)
現在有新版本你要的功能實現了,
UEditor1.4.3版本-直接上傳視頻、附件、圖片到七牛雲存儲,並且支持圖片在線管理功能
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/204686.html