素材牛VIP会员

PHP上传图片至阿里云OSS实例教程

 所属分类:PHP实例-上传

 浏览:2707次  评论:14次  更新时间:2019-09-15
牛币素材VIP可免积分下载
PHP上传图片至阿里云OSS实例教程
积分说明:注册即送10牛币,每日签到可获得5牛币,成为VIP会员可永久免牛币下载!   充值积分   充值会员   更多说明»
素材描述:阿里云存储服务(OpenStorageService,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。本文用以测试阿里云接口上传,压缩文件里,请按照本文说明来配置秘钥id、key和bucket。

基础属性

  • 语言PHP
  • 难易中级
  • 平台阿里云OSS

详细介绍

【阿里云存储图片上传】使用说明:

1、修改oss_php_sdk文件夹下的conf.inc.php文件,填上您OSS帐号的ACCESS_ID和ACCESS_KEY。

2、修改ajax.php,填上您要上传文件的bucket名称。

Bucket
Bucket是OSS上的命名空间,也是计费、权限控制、日志记录等高级功能的管理实体;也就是你的文件存储地址。
Access Key ID、Access Key Secret
用户注册OSS时,系统会给用户分配一对Access Key ID和Access Key Secret,称为ID对,用于标识用户,为访问OSS做签名验证。

conf.inc.php

define('OSS_ACCESS_ID', '');//ACCESS_ID 
define('OSS_ACCESS_KEY', '');//ACCESS_KEY 
define('ALI_LOG', FALSE);//是否记录日志 
define('ALI_DISPLAY_LOG', FALSE);//是否显示LOG输出 
define('ALI_LANG', 'zh');//语言版本设置

ajax.php

if ($_FILES) { 
    require_once 'tu.php'; 
    $bucket = "hjl416148489";   //这里修改成您的bucket名称 
    foreach ($_FILES as $info) { 
        $tmp_file = $info['tmp_name']; 
        if (in_array($info['type'], array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png')) && $info['size'] / 1024 / 1024 <= 4) { 
            $fh = fopen($tmp_file, "r"); 
            $data = fread($fh, filesize($tmp_file)); 
            $length = filesize($tmp_file); 
            fclose($fh); 
            $info['name'] = time() . "." . get_extension($info['name']); //自定义图片名称 
            $rs = saveImage($info, $data, $length, $bucket); 
            if($rs['code'] == 1){ 
                echo "<img src='http://" . $bucket . ".oss.aliyuncs.com/" . $info['name'] . "'>"; 
            }else{ 
                echo "错误信息:"."<span style='color:red'>".$rs['content']."</span>"; 
            } 
             
        } else { 
            echo '请上传文件!'; 
        } 
    } 
    echo "<a onclick='history.go(-1)' style='color:blue;cursor:pointer'>返回</a>"; 
}

saveImage()方法

function saveImage($info, $data, $length, $bucket) { 
    //$key = md5(time().$info['name']); 
    $key = substr($info['name'], 0, strlen(strrchr($info['name'], '.')) * -1); 
    if ($info['type'] == 'image/gif') { 
        $key = $key . '.gif'; 
    } else if (in_array($info['type'], array('image/jpeg', 'image/pjpeg'))) { 
        $key = $key . '.jpg'; 
    } else { 
        $key = $key . '.png'; 
    } 
    $object = $key; 
    $upload_file_options = array('content' => $data, 'length' => $length); 
//  print_r($upload_file_options); 
    $oss_sdk_service = new ALIOSS(); 
 
    $upload_file_by_content = $oss_sdk_service->upload_file_by_content($bucket, $object, $upload_file_options); 
    if ($upload_file_by_content->body) { 
        return array("code" => -1, "content" => $upload_file_by_content->body); 
    } else { 
        return array("code" => 1, "key" => $key); 
    } 
}
upload_file_by_content($bucket,$object,$options = NULL)方法
通过在http body中添加内容来上传文件,适合比较小的文件。其中第二个参数是一个数组,array('content' => $data, 'length' => $length),即文件数据及长度。

相关素材 - 上传

讨论这个素材(14)回答他人问题或分享使用心得会奖励牛币

38***38  
2019年04月14日

借鉴一下,谢谢楼主

回复
陌***3  
2019年05月16日

可以借鉴

回复
蝶***7  
2019年05月22日

不错,挺好的,正好可以学习下

回复
錯***來  
2019年06月07日

拿来借鉴一下

回复
阿***灯  
2019年07月22日

这个可以有,我很喜欢

回复
pr***cy  
2019年08月01日

这个可以有,我很喜欢借鉴一下,谢谢楼主

回复
qq***91  
2019年09月17日

这个可以有,我很喜欢

回复
ni***ao  
2019年09月27日

看着不错!

回复
gh***ui  
2019年09月30日

借鉴一下,谢谢楼主

回复
qq***43  
2019年12月01日

鉴一下,谢谢楼主

回复
qq***43  
2020年01月10日

这个可以有,我很喜欢

回复
qq***75  
2020年03月17日

拿来借鉴学习一下。

回复
qq***35  
2020年05月26日

看着不错!

回复
qq***70  
2020年06月09日

拿来借鉴一下

回复
qq***03  
2020年06月26日

很实用

回复
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取
我的牛币余额:0
所需牛币:30 开始下载

牛币获取:签到、评论、充值    » 在线充值(10牛币=1元)