美文网首页
[PHP高可用后端]①③--上传图片到七牛云

[PHP高可用后端]①③--上传图片到七牛云

作者: 子木同 | 来源:发表于2017-11-06 16:06 被阅读33次
Paste_Image.png Paste_Image.png Paste_Image.png

收费

https://cloud.baidu.com/index.html?track=cp:npinzhuan|pf:pc|pp:left|ci:|pu:495

七牛云

https://www.qiniu.com/

创建存储空间

222.png

图片裁剪

https://developer.qiniu.com/dora/manual/1270/the-advanced-treatment-of-images-imagemogr2

222.png

SDK
https://developer.qiniu.com/kodo/sdk/1241/php

222.png 222.png 222.png 222.png

halt($uploadMgr->putFile($token, $key, $file))

<pre><pre class='xdebug-var-dump' dir='ltr'>
<small>C:\wamp\www\thinkphp\library\think\Debug.php:165:</small>
<b>array</b> <i>(size=2)</i>
  0 <font color='#888a85'>=&gt;</font> 
    <b>array</b> <i>(size=2)</i>
      'hash' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'FqGbwpbXBw2xosMwNzorcFO6tTzY'</font> <i>(length=28)</i>
      'key' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2017/110201711061100259084.png'</font> <i>(length=30)</i>
  1 <font color='#888a85'>=&gt;</font> <font color='#3465a4'>null</font>
</pre></pre>
Paste_Image.png Paste_Image.png

public/index.php 入口文件

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

// [ 应用入口文件 ]

// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
require_once __DIR__.'/../vendor/qiniu/php-sdk-7.2.1/autoload.php';
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
require_once __DIR__.'/../vendor/qiniu/php-sdk-7.2.1/autoload.php';

qiniu.php

<?php
/**
 * Created by PhpStorm.
 * User: tong
 * Date: 2017/11/3
 * Time: 16:01
 */
return [
    'ak' => '_KqNX6a-3mYyJrjEnc8kw3RZIwGg9ytxV0pmXXx6',
    'sk' => 'JnzNwZ8vgx7lKvAH3ZMWM67LuWofCR7VOr9eXRTD',
    'bucket' => 'imoocapp',
    'image_url' => 'http://ox0v9otql.bkt.clouddn.com',
];

Upload.php

<?php
/**
 * Created by PhpStorm.
 * User: tong
 * Date: 2017/11/3
 * Time: 15:50
 */

namespace app\common\lib;

//引入鉴权类
use Qiniu\Auth;
//引入上传类
use Qiniu\Storage\UploadManager;

/**
 * 七牛图片上传基础类库
 * Class Upload
 * @package app\common\lib
 */
class Upload
{
    /**
     * 图片上传
     */
    public static function image()
    {
        //halt($_FILES['file']['tmp_name']);
        if (!$_FILES['file']['tmp_name']) {
            exception('您提交的图片数据不合法', 404);
        }
        //要上传的文件的
        $file = $_FILES['file']['tmp_name'];
        //$ext = explode('.', $_FILES['file']['name']);
        //$ext = $ext[1];

        $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
        //构建一个鉴权对象
        $config = config('qiniu');
        $auth = new Auth($config['ak'], $config['sk']);
        //生成上传的token
        $token = $auth->uploadToken($config['bucket']);
        //上传到七牛后保存的文件名
        $key = date('Y') . '/' . date('m') . '/' /
            substr(md5($file), 0, 5) .
            date('YmdHis') . rand(0, 9999) . '.' . $ext;
        //初始化UploadManager类
        $uploadMgr = new UploadManager();
        list($ret, $err) = $uploadMgr->putFile($token, $key, $file);
        //halt($res);
        if ($err != null) {
            return null;
        } else {
            return $key;
        }


    }
}

Image.php

<?php
/**
 * Created by PhpStorm.
 * User: tong
 * Date: 2017/11/3
 * Time: 14:44
 */

namespace app\admin\controller;

use app\common\lib\Upload;
use think\Request;

class Image extends Base
{

    public function upload0()
    {
        $file = Request::instance()->file('file');
        $info = $file->move('upload');

        if ($info && $info->getPathname()) {
            $data = [
                'status' => 1,
                'message' => 'OK',
                'data' => '/' . $info->getPathname(),
            ];
            return json_encode($data);
        }
        return json_encode([['status'] => 0, 'message' => '上传失败']);

    }

    /**
     * 七牛图片上传
     */
    public function upload()
    {
        try {
            $image = Upload::image();
        } catch (\Exception $e) {
            echo json_encode(['status' => 0, 'message' => $e->getMessage()]);
        }

        if ($image) {
            $data = [
                'status' => 1,
                'message' => 'OK',
                'data' => config('qiniu.image_url') . '/' . $image,
            ];
            echo json_encode($data);
            exit;
        } else {
            echo json_encode(['status' => 0, 'message' => '上传失败']);
        }
    }
}
Paste_Image.png Paste_Image.png

相关文章

网友评论

      本文标题:[PHP高可用后端]①③--上传图片到七牛云

      本文链接:https://www.haomeiwen.com/subject/vhkapxtx.html