HOW UPLOAD FILE TO GOOGLE STORAGE BUCKET ON LUMEN - LARAVEL FRAMEWORK | ILMU PROGRAMMER
Home » HOW UPLOAD FILE TO GOOGLE STORAGE BUCKET ON LUMEN – LARAVEL FRAMEWORK

HOW UPLOAD FILE TO GOOGLE STORAGE BUCKET ON LUMEN – LARAVEL FRAMEWORK

Hai, kali ini kita akan belajar bagaimana membuat fungsi upload file pada lumen framework.

Peringatan : Tutorial ini bukan tutorial basic ya, jadi kamu harus faham mengenai :

  • Pembuatan IAM Roles pada Google
  • Pembuatan Bucket pada Google Storage
  • Penggunaan composer & lumens
  • Penggunaan view – form dan controller nya

Karena pada tutorial ini kami tidak menjelaskan detail tsb, yukz langsung disimak , berikut caranya agar kita bisa membuat upload file pada lumens flatforms ke bucket google storage:

  1. Create IAM Roles untuk Cloud Storage: https://cloud.google.com/storage/docs/access-control/iam-roles
  2. Buat Bucket pada Google Storage: Membuat Bucket Pada Google Storage Cloud
  3. Pastika filesystem sudah ada, jika belum gunakan composer require league/flysystem
  4. buat file config/googlecloud.php dan masukkan code berikut ini
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Google Cloud  configuration
    |--------------------------------------------------------------------------
    |
    | This file is for storing the credentials for Google Cloud
    |
    |
    |
    |
    */

    'project_id' => env('GOOGLE_CLOUD_PROJECT_ID'),
    'storage_bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET'),


];
  1. Jangan lupa pada .env dibuat variable tsb
#-----------------------------------------------------------
# GOOGLE CLOUD
#-----------------------------------------------------------
GOOGLE_CLOUD_PROJECT_ID=id-project-anda
GOOGLE_CLOUD_STORAGE_BUCKET=nama-bucket
  1. Pada view , pastikan sudah menginputkan fileinput pada form
  2. Pada Controller sesuaikan script berikut ini
if ($request->hasFile('image')) { // JIKA DITEMUKAN FILE
            //-------------------------------------------------------
            //PREPARING DATA UPLOAD (LOCAL)
            //-------------------------------------------------------
            $original_filename = $request->file('image')->getClientOriginalName();
            $original_filename_arr = explode('.', $original_filename);
            $file_ext = end($original_filename_arr);
            $filename = Uuid::uuid4() . '.' . $file_ext;
            $destination_path = './upload/user/';
            //-------------------------------------------------------
            //PREPARING DATA UPLOAD (GCP)
            //-------------------------------------------------------
            $googleConfigFile = file_get_contents(config_path('googlecloud.json')); //---TERBACA
            $storage = new StorageClient([
                'keyFile' => json_decode($googleConfigFile, true)
            ]);
            $storageBucketName = config('googlecloud.storage_bucket');
            $bucket = $storage->bucket($storageBucketName);
            $newFolderName = 'assets/'.$request->anln1;
            $googleCloudStoragePath = $newFolderName . '/' . $filename;
            //-------------------------------------------------------
            //UPLOADING DATA UPLOAD TO GCP
            //-------------------------------------------------------
            if ($request->file('image')->move($destination_path, $filename)) {
                $lokasi_file = $destination_path. $filename;
                $fileSource = fopen($lokasi_file, 'r');
                $bucket->upload($fileSource, [
                    'predefinedAcl' => 'publicRead',
                    'name' => $googleCloudStoragePath
                ]);
                Storage::delete($lokasi_file);
                $v_message = 'File berhasil disimpan';
            }else{
                $v_message = 'Gagal Melakukan Upload: Error ID (Move)';
            }
            $google_storage_url = 'https://storage.cloud.google.com/' . $storageBucketName . '/' . $googleCloudStoragePath;

Dan coba kembali, semoga sukses.

Leave a Comment

 
Open chat
Perlu Bantuan Konsultasi ?
Hallo Pembaca.
Telp (021) 55670115 untuk terhubung langsung dengan kami.

Apakah ada yang bisa kami bantu?