Laravel 上传图片及多张图片到七牛云

703 阅读1分钟

1:打开文档运行官方SDK:composer require qiniu/php-sdk; 2:在app\Http目录下新建文件夹Helpers并创建文件qiuniu.php; 3:在qiniu.php中写入

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

function qiniu_upload($filePath)
{
    // 需要填写你的 Access Key 和 Secret Key
    $accessKey = '8qw4Vgq7MmycfixeI0UmDjWkGMQOT9y_IjaSsDMh';
    $secretKey = 'guzXcaqE0fY1PhcV20aNMn4_dr3O6aUf3A9zdkMO';
    // 构建鉴权对象
    $auth = new Auth($accessKey, $secretKey);
    // 要上传的空间
    $bucket = 'nottdote';
    // 生成上传 Token
    $token = $auth->uploadToken($bucket);
    // 上传到七牛后保存的文件名
    $key = basename($filePath);
    // 初始化 UploadManager 对象并进行文件的上传
    $uploadMgr = new UploadManager();
    // 调用 UploadManager 的 putFile 方法进行文件的上传
    $uploadMgr->putFile($token, $key, $filePath);

    //删除本地图片
    unlink($filePath);
}

4:在根目录找到composer.json文件,在autoload里面加入files并引入app/Http/Helper/qiuniu.php,终端运行composer dump-autoload命令. 5:首页 引入 upload.js 以及 html5-fileupload 插件 6:新建ptoto路由并新建Photo控制器并写入 store 方法,方法为:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PhotoController extends Controller
{
    //上传图片
    public function store(Request $request)
    {
        if ($request->hasFile('image') && $request->file('image')->isValid()) {
            $allow_type = ['image/png', 'image/jpeg', 'image/gif'];
            if (!in_array($request->image->getMimeType(), $allow_type)) {
                return ['status' => 0, 'msg' => '图片类型不正确'];
            }

            if ($request->image->getClientSize() > 1024 * 1024 * 3) {
                return ['status' => 0, 'msg' => '图片大小不能超过3M'];
            }

            $path = $request->image->store('public/images');

            //上传到本地
//            return ['status' => 1, 'msg' => '/storage' . str_replace('public', '', $path)];

            //上传到七牛
            $file_path = storage_path('app/') . $path;
            qiniu_upload($file_path);
            return ['status' => 1, 'msg' => 'http://p5xxnm0by.bkt.clouddn.com/' . basename($file_path)];
        }
    }
}

7:upload.js 中修改url 还有修改 下面的msg

$("input[name='image']").val(result.msg);
$("#img_show").attr("src", result.msg);

8:laravel中找到文件储存,终端运行php artisan storage:link!