當前位置:首頁 » 文件管理 » 七牛雲如何上傳

七牛雲如何上傳

發布時間: 2022-10-01 04:40:41

php表單上傳圖片到七牛雲存儲並返回地址……求具體流程~有代碼更好

有的,我最近研究了一下,寫了一篇記錄,如下

原文地址:http://cuiqingcai.com/?p=157

網上關於七牛雲存儲的教程除了官網上的API文檔,其他的資料太少了。研究了下API之後,現在已經能實現圖片的上傳和下載及上傳之後的重定向。

首先本篇文章實現的功能如下:

1.利用表單上傳功能,用戶可以點擊選擇文件按鈕,選擇本地的一個文件,同時設定上傳的圖片的名稱,點擊上傳按鈕可以上傳並存儲到七牛雲存儲。

2.在點擊上傳時會檢測文件的後綴名,限制為jpg和png格式存儲。

3.上傳成功後跳轉到自己設定的一個URL,並傳迴文件信息,如文件名。而不是顯示七牛白花花的json顯示頁面。

好啦,那我們開始吧,首先我們要有一個七牛雲存儲賬號,如果沒有的就自己去申請吧。

七牛雲存儲傳送門:http://www.qiniu.com/

一.SDK下載

https://github.com/qiniu/php-sdk/tags

戳這個網址下載一下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='';//換成你自己的密鑰
$secretKey='';//換成你自己的密鑰


Qiniu_SetKeys($accessKey, $secretKey);

然後建一個上傳策略對象,將你的bucket傳入,bucket 就是你的空間名。

$bucket = 'designpartners';
$putPolicy = new Qiniu_RS_PutPolicy($bucket);

然後調用此方法來生成上傳憑證。

$upToken = $putPolicy->Token(null);

接下來就寫一個html表單

<formmethod="post"action="http://up.qiniu.com"name="form"enctype="multipart/form-data">
<ul>
<inputtype="hidden"id="token"name="token"value=<?phpecho$upToken?>>
<li>
<labelfor="key">key:</label>
<inputname="key"value="">
</li>
<li>
<labelfor="bucket">照片:</label>
<inputname="file"type="file"/>
</li>
<li>
<inputtype="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='';
$secretKey='';

注意:1.key值即為文件名,不要加後綴

2.domain即為bucket加上qiniudn.com,例子中的designpartners就是我在上傳圖片時用的bucket名。

3.accessKey和secretKey換成你自己的,直接用我的不行的..因為我修改了.

Qiniu_SetKeys($accessKey,$secretKey);
$baseUrl=Qiniu_RS_MakeBaseUrl($domain,$key);
$getPolicy=newQiniu_RS_GetPolicy();
$privateUrl=$getPolicy->MakeRequest($baseUrl,null);
echo$privateUrl." ";

傳入這四個值即可生成一樣url,直接訪問url即可實現圖片的下載。

在引入圖片時直接

<img src = "<?php echo $privateUrl; ?>"/>

即可引入圖片咯,很簡單的吧。

四、303重定向

在上面的方法中,我們上傳圖片成功後跳轉到up.qiniu.com下,會顯示白白的網頁,顯示一個json字元串,但是在實際網站開發中我們肯定 不能讓用戶看到這種網頁,所以我們用到了303跳轉。SDK中也為我們封裝了這個方法。使用其實非常簡單。在上傳文件的代碼中添加兩行代碼即可

$putPolicy=newQiniu_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>
functionisValidateFile(obj){
varextend=document.form.file.value.substring(document.form.file.value.lastIndexOf(".")+1);
if(extend==""){
alert("請選擇頭像");
returnfalse;
}
else{
if(!(extend=="jpg"||extend=="png")){
alert("請上傳後綴名為jpg或png的文件!");
returnfalse;
}
}
returntrue;
}
</script>

即可驗證它的類型是否合法。

附:CI代碼實現:

獲取Uptoken:

functiongetUptoken(){
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
//遠程存儲空間名稱
$bucket='designpartners';
$accessKey='';
$secretKey='';
Qiniu_SetKeys($accessKey,$secretKey);
$putPolicy=newQiniu_RS_PutPolicy($bucket);
echosite_url();
$putPolicy->ReturnUrl=site_url()."/upload/receiveInfo";
$putPolicy->ReturnBody='{"key":$(key)}';
$upToken=$putPolicy->Token(null);
return$upToken;
}

文件上傳:

publicfunctionuploadPic(){
$upToken=$this->getUptoken();
$data['upToken']=$upToken;
$this->load->view('upload',$data);
}

303重定向解析:

publicfunctionreceiveInfo(){
$upload_ret=$_GET['upload_ret'];
$json_ret=base64_decode($upload_ret);
$result=json_decode($json_ret);
echo"key".$result->key;
}

文件下載:

publicfunctiondownloadPic(){
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
$key='00000';
$domain='designpartners.qiniudn.com';
$accessKey='';
$secretKey='';
Qiniu_SetKeys($accessKey,$secretKey);
$baseUrl=Qiniu_RS_MakeBaseUrl($domain,$key);
$getPolicy=newQiniu_RS_GetPolicy();
$privateUrl=$getPolicy->MakeRequest($baseUrl,null);
echo"====>getPolicyresult: ";
echo$privateUrl." ";
}

表單:

<script>
functionisValidateFile(obj){
varextend=document.form.file.value.substring(document.form.file.value.lastIndexOf(".")+1);
if(extend==""){
alert("請選擇頭像");
returnfalse;
}
else{
if(!(extend=="jpg"||extend=="png")){
alert("請上傳後綴名為jpg或png的文件!");
returnfalse;
}
}
returntrue;
}
</script>
<formmethod="post"action="http://up.qiniu.com"name="form"enctype="multipart/form-data"onsubmit="returnisValidateFile('file');">
<ul>
<inputtype="hidden"id="token"name="token"value=<?phpecho$upToken?>>
<li>
<labelfor="key">key:</label>
<inputname="key"value="">
</li>
<li>
<labelfor="bucket">照片:</label>
<inputname="file"type="file"/>
</li>
<li>
<inputtype="submit"value="提交">
</li>
</ul>
</form>

⑵ 如何將圖片上傳到七牛雲平台

上一篇文章介紹了「如何將圖片上傳到Cloudinary雲平台?」
但是由於Cloudinary的伺服器在國外,所以上傳和讀取圖片的速度會很慢,不適合用作生產,因此有必要再介紹一下國內廣受歡迎的「七牛」雲平台。以及分步驟給大家介紹如何使用七牛。

各位可以使用我的邀請鏈接注冊: https://portal.qiniu.com/signup?code=3l7nsvonfkxn6
拜託!!!

我們這里添加的對象存儲空間叫做「gougouavatar」

其中的ACCESS_KEY和SECRET_KEY兩個參數來自於「個人中心」的「秘鑰管理」模塊:

_getQiniuToken()返回一個封裝promise函數,這個函數調用了後台生成簽名演算法的介面;
這個函數的回調里拿到了後台生成的key和其他參數;
最後調用_upload方法向七牛的上傳圖片的介面地址: http://upload.qiniu.com ,發送請求,上傳圖片;
最後的響應參數response.key即為圖片上傳成功之後的地址。
如:deae507d-73fd-4489-9d7f-d5fa275bcbe5.jpeg
想要訪問該圖片,還需拼接上七牛提供的測試域名:

經過測試,使用七牛進行上傳的速度確實很快,比國外的cloudinary要快上好幾倍,使用體驗還是很不錯的,大家可以放心使用。

⑶ 如何使用php上傳大文件到七牛雲儲

這個必須有呀。比如discuz、WordPress都有現成的插件來支持的。如果自己程序寫介面的話直接參考七牛的php sdk 文檔呀,文檔地址:http://developer.qiniu.com/docs/v6/sdk/php-sdk.html
當然要用七牛雲存儲必須先注冊,注冊地址:https://portal.qiniu.com/signup?code=3ljz8qyrq8hua

⑷ 請問七牛雲如何上傳自有證書有步驟說明么

首先建議你在證書廠商下載證書時,選擇 Nginx 伺服器類型的證書文件,然後
進入七牛雲管理控制台,點擊 「上傳自有證書」,最後使用編輯器打開後續文件,並復制 .crt 或者 .pem 後綴的文件內容到證書內容 (公鑰),復制 .key 後綴結尾的內容到 證書私鑰 就行了。。你的採納 是我回答的動力。

⑸ 七牛雲上傳android apk文件

1.如何將android apk文件上傳到七牛雲?
1.1首先要設置mimeType文件格式。如圖片的:'image/png', 'image/jpeg', 'image/jpg', 'image/webp'。
1.2android apk文件的格式為:'application/vnd.android.package-archive'
2.如何拼接返回的url?
2.1" https://res1.bnq.com.cn/$ {res.key}" res.key是上傳成功後返回的.apk文件唯一標識。

⑹ 怎麼把自己寫好的網站放到七牛雲伺服器

伺服器先搭建好環境
然後用FTP工具上傳就可以了
當然也可以用可視化工具先搭建環境和面板,然後使用面板的上傳功能上傳文件

⑺ 小書匠綁定七牛雲圖床

本人一直使用印象筆記,但是其並不是完全的支持導入導出md格式,所以就使用小書匠這款軟體來進行md文檔編寫,並直接發布到印象筆記中。
下面說下小書匠如何關聯七牛雲存儲,這里是用七牛雲作為圖床。這樣做的話,寫好的md文件中的圖片都是以外鏈形式導入的,可以在任何地方打開使用。

需要的信息如上圖所示,這里挨個解釋下如何填寫:
①第一個自定義名稱可隨便填寫。

②接下來的上傳入口和下方的鏈接填寫,請參考下圖:

③AccessKey和SecretKey的值,具體請參照參照七牛雲平台中的 個人面板 --> 個人中心 --> 秘鑰管理中的數據,如下所示:

④空間名稱(Bucket Name)的填寫,在七牛雲中選擇一個你的空間名稱即可,如下所示:

這里我填寫"tiny-vampire"即可。

⑤文件名稱生成規則的填寫:
這里可以按需更改,需要注意的是最好把漢字替換掉,換成英文即可。

⑥圖片url前綴填寫:請參照步驟②中的入口url的填寫,唯一區別是這里在的格式是以"/"結尾。

好了,配置到了這里就告一段落了,如果對你有用的話記得點贊。

⑻ 在 iPic 中添加七牛雲

七牛雲是 iPic 在內測期間呼聲比較高的國內圖床,這里介紹下在 iPic 中添加七牛雲的過程。

這點比較簡單,直接到 這里 注冊即可。

七牛的數據處理是以 資源 為單位的,這里我們可以簡單理解為七牛中的 文件夾

登錄七牛後,進入 添加資源 頁面,選擇添加 ****對象存儲****。

這里我創建一個 ****test**** 資源。

# 在 iPic 中添加七牛圖床
打開 偏好設置 ,進入 圖床 頁,選擇添加 七牛 。

以下分別介紹各項的意義及如何配置:

完成輸入後,可以點擊 ****驗證**** 按鈕。如果輸入沒有問題,則右側會出現 ****通過**** 鏈接,點擊後就可以看到測試時上傳至七牛的圖片。

最後,點擊 ****應用**** 按鈕進行保存。

# 使用七牛
在 iPic 菜單 > 圖床 中選擇剛剛添加的七牛,之後上傳的圖片就會在七牛圖床中。

註:本文中的圖就是通過上述方式先上傳至七牛、再粘貼至 Markdown 編輯器中,確實很方便,大家試試吧。

⑼ dedecms做的下載站,我想把文件存到七牛雲存儲上,應該怎麼做

先把你的東西上傳到七牛雲存儲 然後把鏈接復制下來 上傳到你的網站上面去就可以了

⑽ txt文件如何上傳到七牛雲的雲空間當中,並如何生成外鏈接成功的話加送50金幣

雲盤肯定有個上傳文件的地方 你可以點一下把你想上傳的TXT上傳上去然後它自己就會有連接了啊 然後你把網址欄里的網址復制一下發給任何人 任何人點這個東西進去都可以看到你上傳的TXT文件的

熱點內容
unturned怎麼不進伺服器聯機 發布:2024-10-09 07:24:17 瀏覽:392
javaoracle 發布:2024-10-09 07:23:32 瀏覽:560
安卓系統總是被殺後台怎麼辦 發布:2024-10-09 07:11:31 瀏覽:304
花雨庭伺服器如何全屏 發布:2024-10-09 06:39:28 瀏覽:213
密碼查看器怎麼使用 發布:2024-10-09 06:38:55 瀏覽:495
sqlrownum 發布:2024-10-09 06:28:53 瀏覽:383
F模塊驅動器編譯錯誤 發布:2024-10-09 06:06:21 瀏覽:636
腳本亞索集錦 發布:2024-10-09 05:53:30 瀏覽:877
安卓手機格式化後為什麼打不開 發布:2024-10-09 05:52:58 瀏覽:511
雲伺服器可以超級計算機嗎 發布:2024-10-09 05:51:33 瀏覽:17