阿里云OSS上传图片,图片处理

下载阿里云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");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值