阿里雲OSS使用方法

<?php
require_once dirname(realpath(__FILE__)).DIRECTORY_SEPARATOR.'Aliyunoss'.DIRECTORY_SEPARATOR.'sdk.class.php';


class AliossResponse {
/**
* 上傳本地文件到雲服務器上
* sunjunfeng 2015-07-04
* 返回參數
*/
static public function uploadFile($file_path){
$oss_sdk_service = new ALIOSS(null,null,C('DEFAULT_OSS_INTERNAL_HOST'));

//設置是否打開curl調試模式
//$oss_sdk_service->set_debug_mode(FALSE);

//設置開啓三級域名,三級域名需要注意,域名不支持一些特殊符號,所以在創建bucket的時候若想使用三級域名,最好不要使用特殊字符
$oss_sdk_service->set_enable_domain_style(TRUE);
$bucket = OSS_BUCKET;
//$filePrefix = 'market/';//爲了滿足新的阿里雲OSS地址,需要去掉這個目錄
$filePrefix = '';

try {
$suffix = strtolower(pathinfo($file_path,PATHINFO_EXTENSION));
if ($suffix == 'jpg'  || $suffix == 'gif' || $suffix == 'png' || $suffix == 'jpeg'){
$imagesize = getimagesize($file_path);
$file_name = md5_file($file_path).'_'.$imagesize[0].'x'.$imagesize[1].'.'.$suffix;
$objectname = $filePrefix.'image/'.substr($file_name, 0,2).'/'.$file_name;
$relativeobjectname = 'image/'.substr($file_name, 0,2).'/'.$file_name;

// 判斷aliyunOss是否存在該文件(文件已做MD5)
$decideFilename = C('RES_UPDATE_URL').'image/'.substr($file_name, 0,2).'/'.$file_name;
if (self::netFileExists($decideFilename) ){
$header['etag'] = md5_file($file_path);
$header['x-oss-request-url'] = $decideFilename;
}else {
$response = $oss_sdk_service->upload_file_by_file($bucket, $objectname, $file_path);
$header = $response->header;
$header['x-oss-request-url'] = C('RES_UPDATE_URL').$relativeobjectname;
}
$header['oss_relative_url'] = $relativeobjectname;
$header['oss_response_image_w'] = $imagesize[0];
$header['oss_response_image_h'] = $imagesize[1];
}else {
$file_name = md5_file($file_path).'.'.$suffix;
$objectname = $filePrefix.'apk/'.substr($file_name, 0,2).'/'.$file_name;
$relativeobjectname = 'apk/'.substr($file_name, 0,2).'/'.$file_name;

// 判斷aliyunOss是否存在該文件(文件已做MD5)
$decideFilename = C('RES_UPDATE_URL').'apk/'.substr($file_name, 0,2).'/'.$file_name;
if (self::netFileExists($decideFilename)){
$header['etag'] = md5_file($file_path);
$header['x-oss-request-url'] = $decideFilename;
}else {
$response = $oss_sdk_service->upload_file_by_file($bucket, $objectname, $file_path);
$header = $response->header;
$header['etag'] = md5_file($file_path);
}
$header['oss_relative_url'] = $relativeobjectname;
}
$header['oss_response_status'] = 1;
$header['oss_response_message'] = 'OK';
return $header;
}catch (Exception $ex){
$return = array();
$return['oss_response_status'] = 100;
$return['oss_response_message'] = $ex->getMessage();
return $return;
}

}

//判斷外網文件是否存在並且大小不爲0
public function netFileExists($decideFilename){
$urlHeader = get_headers($decideFilename, 1);
if (strpos($urlHeader[0], '200') && (int)$urlHeader['Content-Length'] != 0){
return true;
}else {
return false;
}
}


}
發佈了12 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章