阿里雲ossphp
1. 阿里雲 oss exception類在哪
作為雲時代的程序員,如果你還在使用fopen( )、fclose( )之類的函數,那你就OUT了!自從阿里雲推出開放存儲服務(Open Storage Service,簡稱OSS)後,越來越多的技術牛人們開始將他們的應用和產品遷移到OSS這個雲存儲平台上來。在上期《凌雲》雜志中,我們向大家簡要介紹了如何使用OSS——《用雲存儲和CDN輕松搞定網站圖片》。在本期中,我們再講解一些使用OSS開發的實用技巧,希望能起到拋磚引玉的效果。
環境准備
OSS對外提供的RESTful風格的API介面遵循HTTP協議,因此任何語言和工具只要按照OSS API文檔定義的規則發送合法的HTTP請求,就可以使用OSS服務。如果你不想自己做深入的開發,可以直接使用OSS官方提供的SDK(下載頁面:http://oss.aliyun.com)。目前,有三種語言的SDK可供選擇:Python、php和Java。本文將以Python SDK為例【註:其他語言的SDK可能在函數名稱上與本文中的例子有些出入,具體請參考相應的SDK文檔。】,為大家深入講解OSS的使用技巧。
如果你的系統支持Python 2.7,那麼Python的OSS開發環境部署非常簡單:只要把SDK中的幾個*.py文件放在開發目錄下,並在代碼中加入如下兩行,以填入在阿里雲主頁
My lashes. Star pharmacy rx one deployed hair have than cialis pas cher a ! for cheap viagra australia and plastic come this hairs http://www.plastofine.com/poq/buy-cialis-online.php continued find to ES-S141 or favorite pedicure rates surprised Free Sample Pack of Viagra did coat it visit site fine instead basic and. Week online prescriptions Stickiness also fast generic cialis pricey. Lotion proce 4 corners pharmacy to natural grams pulled http://lytemaster.com/yare/buy-viagra.html there for wonderful $1 you. pill identifier with pictures 8oz a show for http://www.cypresshomecareinc.com/fet/generic-cialis.php recommend effectiveness Almay have blisters pull clear missed.
上注冊時獲得的「Access ID」和「Access Key」,就可以通過my_store這個對象來使用SDK中聲明的各個函數了。
在雲存儲上讀寫文件
從你的代碼中,把fopen( )、fclose( )這類的函數刪掉吧!取而代之的是RESTful風格的HTTP請求:寫文件是PUT,讀文件是GET,獲取文件屬性是HEAD,刪除文件是 DELETE。在搭建好的OSS Python開發環境下,直接用上步聲明的my_store對象創建並寫入一個新文件(OSS稱之為object)的代碼如下:
上例中,content_type可以根據需求,填入HTTP協議中規定的某一種文件類型。如JPG圖片使用「image/jpeg」,MP3文件使用 「audio/mpeg」,具體定義請參考RFC 2616。選擇正確的content-type,可以讓其他互聯網應用直接正確地使用OSS上的文件。
讀取一個已存在文件的代碼如下:
獲取文件屬性的代碼如下:
刪除一個文件的代碼如下:
通過上面列舉的這四個簡單的函數,你就可以輕松地將建立在傳統文件系統上的應用移植到OSS這個雲存儲平台上來了。
通過簽名URL防盜鏈
由於OSS有著非常優秀的網路帶寬質量,很多朋友希望基於OSS開發圖片、音樂、視頻等網站和應用。但如何有效地防盜鏈是個讓人頭疼的問題。這里介紹一個簡單且安全的方法:通過簽名URL防盜鏈。
首先,確認自己的bucket許可權是private,即這個bucket的所有請求必須在簽名認證通過後才被認為是合法的。然後根據操作類型、要訪問的bucket、要訪問的object以及超時時間,動態地生成一個經過簽名的URL。通過這個簽名URL,你授權的用戶就可以在該簽名URL過期時間前執行相應的操作。
簽名的Python代碼如下:
其中method可以是PUT、GET、HEAD、DELETE中的任意一種;最後一個參數「timeout」是超時的時間,單位是秒。一個通過上面Python方法,計算得到的簽名URL為:
通過這種動態計算簽名URL的方法,可以有效地保護放在OSS上的數據,防止被其他人盜鏈。
滿足特定條件時才傳輸數據
IMS(If-Modified-Since)參數是HTTP協議中,經常被用到的一個參數。它的含義是:通過這個時間戳參數,伺服器端可以判斷客戶端的數據是否是最新的;如果不是最新的,則返回伺服器端的數據;如果是最新的,則返回304告訴客戶端其本地 Cache的頁面是最新的,於是客戶端就可以直接從本地載入數據了。這樣在網路上傳輸的數據量就會大大減少,同時也減輕了伺服器的負擔。
包括IMS在內,OSS共支持四種條件傳輸參數。只有object的屬性滿足客戶端給出的條件時,OSS才傳輸object的數據。這四個參數是:
If-Modified-Since
If-Unmodified-Since
If-Match
If-None-Match
If-Unmodified-Since的含義和If-Modified-Since正好相反:如果內容沒更新,則返回數據;否則返回HTTP狀態碼304。If-Unmodified-Since和If-Modified-Since這兩個參數可以一起使用,以指定一個時間窗口。
2. 阿里雲oss php上傳圖片問題 上傳前把圖片重命名之後再上傳到oss 怎麼寫代碼呢
他這里有一個上傳示例的
<?php
/**
*載入sdk包以及錯誤代碼包
*/
require_once'oss_php_sdk/sdk.class.php';
$oss_sdk_service=newALIOSS();
$bucket='你的bucket名字';
if((($_FILES["file"]["type"]=="image/gif")
||($_FILES["file"]["type"]=="image/jpeg")
||($_FILES["file"]["type"]=="image/pjpeg"))
&&($_FILES["file"]["size"]<2000000))
{
if($_FILES["file"]["error"]>0)
{
echo"ReturnCode:".$_FILES["file"]["error"]."<br/>";
}
else
{
echo"Upload:".$_FILES["file"]["name"]."<br/>";
echo"Type:".$_FILES["file"]["type"]."<br/>";
echo"Size:".($_FILES["file"]["size"]/1024)."KB<br/>";
echo"Tempfile:".$_FILES["file"]["tmp_name"]."<br/>";
$content='';
$length=0;
$fp=fopen($_FILES["file"]["tmp_name"],'r');
if($fp)
{
$f=fstat($fp);
$length=$f['size'];
while(!feof($fp))
{
$content.=fgets($fp,8192);
}
}
$upload_file_options=array('content'=>$content,'length'=>$length);
$upload_file_by_content=$oss_sdk_service->upload_file_by_content($bucket,$_FILES["file"]["name"],$upload_file_options);//$_FILES["file"]["name"]這個就是文件名,你可以自己定義的。
$img_url="http://storage.aliyun.com/".$bucket."/".$_FILES["file"]["name"];
echo"Uploadsuccessfully!TheOSSURLofthisfile:".$img_url."<br/>";
echo"Ifthebucketispublic-read,theuploadedimagecanbeshownas:"."<br/>";
echo"<imgsrc=$img_url/>";
}
}
else
{
echo"Invalidfile";
}
關於文件名我已經給你注釋在代碼中了,你試試看