Tìm hiểu Queue trong Laravel

Quang Trí • Ngày 18 tháng 12 năm 2019

develop php

Giới thiệu

  1. Cloudinary là một giải pháp Software-as-a-Service(SaaS) để quản lý các nội dung trên web hay ứng dụng di động của bạn trên cloud. Nói cách đơn giản, nhà cung cấp phần mềm không bán sản phẩm phần mềm mà bán dịch vụ dựa trên phần mềm đó. Thông thường, khi muốn sử dụng một phần mềm, chúng ta sẽ phải mua hoặc tải vài chục đến vài trăm MB bộ cài phần mềm sau đó cài lên máy của mình. Điều này có thể gây rất nhiều rắc rối như tốn bộ nhớ, RAM yếu, cấu hình không tương thích... Còn với SaaS, bạn chỉ cần 1 máy tính nối mạng, cài một ứng dụng nhỏ làm giao diện phần mềm (hoặc không phải cài gì) là có thể sử dụng dịch vụ.
  2. Với Cloudinary bạn có thể dễ dàng tải hình ảnh lên cloud, tự động thực hiện các thao tác với hình ảnh mà không cần cài đặt bất kỳ phần mềm phức tạp nào. Tất cả các hình ảnh của bạn sau đó được phân phối liền mạch thông qua một CDN nhanh, tối ưu hóa tốt nhất. Cloudinary cung cấp các API toàn diện, các khả năng quản trị, dễ dàng tích hợp với các ứng dụng web và điện thoại di động hiện có.

Dưới đây mình sẽ làm một ví dụ demo thực hiện các thao tác với ảnh sử dụng Cloudinary. Cùng làm với mình nhé!

Cài đặt

Sau khi bạn tạo project rồi thì hãy gõ lệnh sau:

composer require jrm2k6/cloudder:0.4.*

Khi cài đặt hoàn tất, bạn có thể kiểm tra trong composer.json:

 "require": {
        "php": ">=5.6.4",
        "jrm2k6/cloudder": "0.4.*",
        "laravel/framework": "5.4.*",
        "laravel/tinker": "~1.0"
    },

Nếu thấy có "jrm2k6/cloudder": "0.4.*", thì coi như bạn đã cài đặt thành công.

Cấu hình

Nếu các bạn chưa có tài khoản thì hãy vào link này để đăng kí: https://cloudinary.com Đăng kí xong bạn sẽ được chuyển đến trang dashboard, tại đó bạn sẽ được nhìn thấy Account Details của mình

Sau đó bạn vào file .env trong project của bạn rồi thêm những dòng dưới đây

CLOUDINARY_API_KEY=`your key`
CLOUDINARY_API_SECRET=`your secret`
CLOUDINARY_CLOUD_NAME=`your cloud name`

Trong đó, your key, your secret, your cloud name sẽ là những thứ có trong account details của bạn, bạn hãy cop nó vào trong file .env. Để sử dụng được Cloudinary, thì bạn cần thêm vào file config/app.php như sau:

'providers' => array(
  JD\Cloudder\CloudderServiceProvider::class,
);

'aliases' => array(
  'Cloudder' => JD\Cloudder\Facades\Cloudder::class,
);

Chạy php artisan vendor:publish --provider="JD\Cloudder\CloudderServiceProvider" Xong, giờ đến lúc sử dụng nó!

Sử dụng

upload()

Cloudder::upload($filename, $publicId, array $options, array $tags);

Ở đây:

uploadVideo()

Cloudder::uploadVideo($filename, $publicId, array $options, array $tags);

Các tham số tương tự như upload ảnh

getPublicId()

Cloudder::getPublicId()

Trả về public Id của ảnh/video mà bạn đã upload lên lần cuối cùng

getResult()

Cloudder::getResult()

Trả về kết quả lần cuối upload như sau:

array:16 [▼
  "public_id" => 
  "version" =>
  "signature" => 
  "width" => 
  "height" => 
  "format" => 
  "resource_type" =>
  "created_at" => 
  "tags" => []
  "bytes" => 
  "type" => 
  "etag" => 
  "url" => 
  "secure_url" => 
  "overwritten" => 
  "original_filename" =>
]

show() + secureShow()

Cloudder::show($publicId, array $options)
Cloudder::secureShow($publicId, array $options)

với

showPrivateUrl()

Cloudder::showPrivateUrl($publicId, $format, array $options)

với:

rename()

Cloudder::rename($publicId, $toPublicId, array $options)

destroyImage()

Cloudder::destroyImage($publicId, array $options)

Demo

Mình xin demo như sau: Ở view profile.blade.php

<form method="POST" class="form-horizontal" enctype="multipart/form-data" action="/profile">
    {{csrf_field()}}
    <div class="text-center">
        <h6> Choose image </h6>
        <input type="file" name="avatar" class="text-center center-block well well-sm">
    </div>
 </form>

Ở routes/web.php:

Route::post('/profile', 'UserController@profile');

Ở UserController.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Cloudder;

class UserController extends Controller
{
    public function profile(Request $request)
    {
        if ($request->hasFile('avatar')) {
            //get name image
            $filename = $request->avatar;
            //upload image
            Cloudder::upload($filename, 'uploads/' . $filename);
         }
         //get url image on Cloudinary
         return Cloudder::show('uploads/'. $filename);
    }
 }

Bạn hãy vào trong media library của bạn, kiểu tra xem trong folder uploads đã có ảnh mà bạn upload lên hay chưa nhé! Mình xin kết thúc bài tìm hiểu ở đây, vì tìm hiểu bài trong thời gian ngắn nên chắc chắn còn rất nhiều thiếu sót. Mong các bạn thông cảm !

Tham khảo: http://cloudinary.com/documentation/php_integration https://packagist.org/packages/jrm2k6/cloudder