下载阿里云OSS PHP demo
git https://github.com/aliyun/aliyun-oss-php-sdk?spm=5176.doc32099.2.1.kErQam
demo结构如下
<?php
use OSS\OssClient;
use OSS\Core\OssException;
require_once "../alioss/autoload.php";
$accessKeyId = "xxxx";
$accessKeySecret = "xxxx";
$endpoint = "oss-cn-qingdao.aliyuncs.com";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
print $e->getMessage();
}
$path = "../uploads/";
$extArr = array("jpg", "png", "gif");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
$name = $_FILES['img']['name'];
$size = $_FILES['img']['size'];
if(empty($name)){
echo '请选择要上传的图片';
exit;
}
$ext = extend($name);
if(!in_array($ext,$extArr)){
echo '图片格式错误!';
exit;
}
if($size>(10000*1024)){
echo '图片大小不能超过10000KB';
exit;
}
$image_name = time().rand(100,999).".".$ext;
$tmp = $_FILES['img']['tmp_name'];
if(move_uploaded_file($tmp, $path.$image_name)){
echo '<img src="'.$path.$image_name.'">';
$object = "images/".$image_name; //上传文件路径名称,OSS路径
$content = file_get_contents($path.$image_name); //本地文件路径
putObject($ossClient,'存储空间名称',$object,$content); //上传到OSS
$img_url = $object;
//unlink($path.$image_name);
}else{
echo '上传出错了!';
}
}
//获取文件类型后缀
function extend($file_name){
$extend = pathinfo($file_name);
$extend = strtolower($extend["extension"]);
return $extend;
}
//createObjectDir($ossClient, '存储空间名称','目录名称');
/**
* 创建虚拟目录
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称 $dir目录名称
* @return null
*/
function createObjectDir($ossClient, $bucket, $dir) {
try{
$ossClient->createObjectDir($bucket, "dir");
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
/**
* 生成GetObject的签名url,主要用于私有权限下的读访问控制
*
* @param $ossClient OssClient OSSClient实例
* @param $bucket string bucket名称
* @return null
*/
function getSignedUrlForGettingObject($ossClient, $bucket)
{
$object = "images/1497682096987.jpg";
$timeout = 3600; // URL的有效期是3600秒
$style = "image/resize,m_fixed,w_100,h_100/rotate,90"; //设置图片缩放高宽为100,旋转90度
$options = array(OssClient::OSS_PROCESS => $style );
try{
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": signedUrl: " . $signedUrl. "\n");
/**
* 可以类似的代码来访问签名的URL,也可以输入到浏览器中去访问
*/
$request = new RequestCore($signedUrl);
$request->set_method('GET');
$request->send_request();
$res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code());
if ($res->isOK()) {
print(__FUNCTION__ . ": OK" . "\n");
} else {
print(__FUNCTION__ . ": FAILED" . "\n");
};
}
//getSignedUrlForGettingObject($ossClient,'存储空间名称');
/**
* 上传图片
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function putObject($ossClient, $bucket, $object, $content)
{
try{
$ossClient->putObject($bucket, $object, $content);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}