七牛存儲圖片
㈠ 七牛雲存儲對接好網站後上傳不了圖片,但是能獲取存儲空間里的文件
首先我們先登錄阿里旺旺賬號,在阿里旺旺面板的下方有一個「淘」字樣,單擊該按鈕。
單擊「淘」按鈕,會下拉很多選項,在下拉的選項里,我們單擊圖片空間按鈕。
單擊圖片空間會跳到如圖所示頁面,這時我們單擊菜單欄里的「圖片上傳」按鈕。
單擊「圖片上傳」按鈕會出現如圖所示,這時我們點擊添加圖片按鈕。點擊之後會彈出第二個圖的對話框,這時我們選擇好要上傳的圖片,選擇好後單擊下方的「選好了」按鈕。
單擊之後會彈出如圖對話框,這時我們單擊下方的立即上傳按鈕,點擊之後就會彈出第二個圖片所示對話框。
在彈出的對話框里,我們單擊完成按鈕,頁面會跳到如圖所示,這時我們可以看到剛才的圖片已經在圖片空間里了。
㈡ 如何查看wordpress運用七牛鏡像存儲成功
安裝七牛鏡像存儲 WordPress 插件後,設置完成後,過一段時間(20分鍾之後),在七牛鏡像存儲的空間里可以看到轉移過來的圖片及文件,如JS,css等等,就說明成功了。
㈢ 我可以把一些網站上的網頁,圖片.縮略圖之類的放到七牛雲存儲嗎這樣會不會對seo有影響。有用過的朋
不會,圖片優化一般做好alt標簽,部分做好title標簽優化,同時控制圖片大小,便於用戶體驗即可。
㈣ 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>
㈤ 七牛圖片基本處理和水印能同時用嗎
相信很多開發者會把圖片存放到七牛上,我的web站點也是吧圖片存儲到七牛上,對於以圖片為主的站點,這樣可以節省很大帶寬。 將圖片上傳到七牛伺服器的重點就是獲得上傳憑證uploadToken,直接把AccessKey和Secret放到客戶端太不安全,容易被反編譯。所以需要在伺服器端根據AccessKey和Secret動態生成一個uploadToken,然後傳回到客戶端,客戶端通過這個uploadToken將圖片上傳到七牛伺服器。 第一、在伺服器端生成uploadToken //將圖片上傳到七牛 start $bucket='七牛空間名稱'; $expires = 3600; $accessKey='去七牛查看'; $secretKey='去七牛查看'; $client = new QiniuClient($accessKey,$secretKey); $flags = array(); $scope = $bucket; $deadline = time() + $expires; $flags['scope'] = $scope; $flags['deadline'] = $deadline; $flags['returnBody'] = null; echo $client->uploadToken($flags); 這里注意一下bucket:七牛空間名稱和deadline:uploadToken失效時間,具體可查看一下官網上傳憑證介紹 uploadToken($flags)是自己封裝的用於生成上傳憑證的函數 public function uploadToken($flags) { if(!isset($flags['deadline'])) $flags['deadline'] = 3600 + time(); $encodedFlags = self::urlsafe_base64_encode(json_encode($flags)); $sign = hash_hmac('sha1', $encodedFlags, $this->secretKey, true); $encodedSign = self::urlsafe_base64_encode($sign); $token = $this->accessKey.':'.$encodedSign. ':' . $encodedFlags; return $token; } public static function urlsafe_base64_encode($str){ $find = array("+","/"); $replace = array("-", "_"); return str_replace($find, $replace, base64_encode($str)); } 第二、下載qiniu-android-sdk-7.0.0.jar和android-async-http-1.4.6並導入項目 第三、android上傳圖片 由於Android4.0 以後不允許在主線程進行網路連接,所以需要新開個線程來獲取上傳憑證。 /* * 上傳圖片到七牛 */ private void uploadImg(){ new Thread(new Runnable(){ @Override public void run() { //獲得七牛上傳憑證uploadToken String token=getUploadToken(); //手機SD卡圖片存放路徑 String imgPath=""; try { imgPath=FileUtil.getBasePath()+ "/test.jpg"; } catch (IOException e) { e.printStackTrace(); } if(token!=null){ String data = imgPath; //圖片名稱為當前日期+隨機數生成 String key = getRandomFileName(); UploadManager uploadManager = new UploadManager(); uploadManager.put(data, key, token, new UpCompletionHandler() { @Override public void complete(String arg0, ResponseInfo info, JSONObject response) { // TODO Auto-generated method stub Log.i("qiniu", info.toString()); } }, null); } else{ Log.i("fail", "上傳失敗"); } } }).start(); } FileUtil.getBasePath()使用來獲取SD卡基本路徑,getRandomFileName()生成一個隨機數來命名上傳圖片,具體方法我在這就不寫了。 獲得上傳憑證的方法也很簡單,直接使用httpget和伺服器通信,獲得第一步中生成的數據即可。(注意10.0.2.2是模擬器提供的特殊IP,等同於在電腦端的環回測試IP127.0.0.1) /* * 獲得七牛上傳憑證uploadtoken */ private String getUploadToken() { HttpClient client = new DefaultHttpClient(); StringBuilder builder = new StringBuilder(); HttpGet myget = new HttpGet("10.0.0.2/test/getUploadToken.php"); try { HttpResponse response = client.execute(myget); BufferedReader reader = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); for (String s = reader.readLine(); s != null; s = reader.readLine()) { builder.append(s); } return builder.toString(); } catch (Exception e) { Log.i("url response", "false"); e.printStackTrace(); return null; } } 通過LOG日誌可以看到Qiniu--success,說明上傳成功。
㈥ 七牛雲存儲Android端可以一次上傳多張圖片嗎
只能上傳一張照片,
如果要上傳多張的話,
可以把幾張照片拼起來做成一張照片再上傳
㈦ 七牛雲存儲的關於七牛
七牛,是一家雲存儲初創企業,由國內存儲行業的領軍人物之一許式偉於2011年創立。團隊核心成員主要來自盛大、金山、網龍、惠普等知名互聯網公司,核心成員之間已合作多年。
七牛採用全分布式存儲架構,可以解決單一數據中心架構可能存在的風險。和傳統的雲存儲服務不同,七牛還增加了上傳下載全網加速以及圖片、音視頻的處理服務。
七牛雲存儲主要託管企業的靜態資源,為企業提供一站式在線數據託管、上傳下載全網加速、以及數據雲端處理服務。主要做靜態文件,包括富媒體一體化解決方案,解決富媒體存儲、上傳下載加速、數據處理,包括圖片處理、音視頻處理,比如說做縮略圖,打水印。
此外,七牛還提供了鏡像存儲、客戶端直傳以及斷點續上傳等功能,方便開發者的使用。
㈧ 七牛雲存儲中圖片處理功能的存儲緩存 會緩存多長時間
通過URL同步觸發imageView2或者imageMogr2這樣的處理後,處理結果會被緩存在cdn節點上,這樣只要七牛空間資源不發生變化、同時處理命令不發生變化,那麼緩存有效期內就會訪問到緩存,緩存過期後回七牛源站校驗,如果校驗源站資源未改變,那麼會更新緩存有效期,同時依然訪問緩存。
另外,上傳策略可以設置其緩存時間
你可以嘗試在鏈接後加上?time=時間戳試看看,
或者在七牛基本設置 - 空間設置 - 空間管理 - 七牛雲存儲修改maxAge緩存時間