laravel利用七牛存储网站图片等静态资源

小文blog小文 2016-06-24 21:18 3703人围观

众所周知,一个成功的网站离不开大量的图片,对于有实力的公司,通常会有自己的静态资源服务器用于存放,那么今天小文教大家利用第三方来存储图片,来提高网站加载速度,减少网站流量的浪费!这次我将用laravel做演示。

前台说明

前台小文用的是一款jquery的插件,uploadfy,来进行上传,代码如下:

$(function() {
    $('#file_upload').uploadify({
            'buttonText' : '上传图片',
            'formData'     : {
                'timestamp' : '{{time()}}',
                '_token'     : "{{csrf_token()}}"
            },
            'swf'      : "{{asset('resources/org/uploadify/uploadify.swf')}}",
            'uploader' : "{{url('admin/upload')}}",
            'onUploadSuccess' : function(file, data, response) {
                data = $.parseJSON(data);
                if(data.status){
                   $('input[name=cover]').val(data.info);
                    $('#artical_cover').attr('src',data.info); 
                }             
            }
     });
 });

熟悉这款插件的朋友们,会明白它将文件信息异步发送给域名/amdmin/upload这个地址。

后台说明

在后台,我们接口文件信息,开始进行存储七牛的步骤。

首页百度七牛,注册为用户,并下载其php-sdk并引入项目

blob.png

require_once('resources/org/qiniu/autoload.php');//引入根目录的自动加载文件
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;//本次用到的这两个类,一个是验证秘钥,一个是上传类

获取我们的accessKey和secretKey

blob.png

开始我们的laravel上传

protected $url_access = 'http://7xviiw.com1.z0.glb.clouddn.com/';//空间地址,可以在七牛个人中心创建
public function upload()
{
    $file = Input::file('Filedata');
    if($file->isValid()){
        $accessKey = '****************************************';
        $secretKey = '****************************************';
        $auth = new Auth($accessKey, $secretKey);
        // 要转码的文件所在的空间
        $bucket = 'xiaowenblog';
        // 生成上传 Token
        $token = $auth->uploadToken($bucket);
        // 要上传文件的本地路径
        $filePath = $file->getRealPath();
        // 上传到七牛后保存的文件名
        $entension = $file -> getClientOriginalExtension();
        $key = date('YmdHis').mt_rand(100,999).'.'.$entension;
        // 初始化 UploadManager 对象并进行文件的上传
        $uploadMgr = new UploadManager();
        // 调用 UploadManager 的 putFile 方法进行文件的上传
        list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
        if ($err !== null) {
            return ['status'=>0,'info'=>$err];
        } else {
            return ['status'=>1,'info'=>$this->url_access.$ret['key']];
        }
        //失败返回Err信息,成功返回图片的地址。
    }
}

此时,我们将图片地址存入数据库即可。

写在最后

由于篇幅较短,讲的不是太清楚哈...如果有不懂的,欢迎加群交流!这样用了七牛来存储图片,网站加载速度会快一些,还有七牛的一些API可以研究下,如缩略等~

转载请注明来自小文blog,本文标题:laravel利用七牛存储网站图片等静态资源

发布评论
生活是一场戏,主角当累了,你亦可成为观众,停下脚步,歇一歇