Notes :

Sebagai permulaan, perlu di ingat di dokumentasi ini saya kebetulan memakai Laravel. Jadi mungkin perlu ada penyesuaian pada project lainnya (apabila memakai selain laravel).

Step 1 (Konfigurasi) :

Yang pertama harus dilakukan adalah memperbarui file config/service.php. disini kita mendefinisikan URL dari proxy untuk mengunggah dan juga memuat file, yang dapat di atur pada file .env.

'proxy_cdn' => [
    'url_upload' => env('PROXY_URL_UPLOAD', null), *// URL proxy untuk mengunggah file*
    'url_load'   => env('PROXY_URL_LOAD', null),   *// URL proxy untuk memuat file*
]

Setelah menambahkan code diatas pada file config/service.php. Selanjutnya anda perlu menambahkan code berikut pada file .env.

PROXY_URL_UPLOAD=https://54.254.240.41
PROXY_URL_LOAD=https://proxy.impstudio.id

Notes :

Pada saat dokumentasi ini dibuat, URL pada env diatas adalah seperti itu. jika ada perubahan pada waktu mendatang maka perlu disesuaikan.

Step 2 (Setting Helpers) :

Disini karena saya menggunakan helpers untuk mengunggah dan memuat file. maka yang akan saya update adalah helpers yang saya gunakan untuk mengunggah dan juga memuat file tersebut. dimana saya akan mengupdate pada file app/Http/helpers.php.

Yang pertama pada fungsi upload :

function upload_file($directory, $file, $filename = null)
{
		if (is_null($filename) || strlen(pathinfo($filename, PATHINFO_EXTENSION)) < 3) {
        $extensi  = $file->getClientOriginalExtension();
        $filename = "{$directory}_" . date('Ymdhis') . randomKey() . ".{$extensi}";
    }

    $mime = $file->getMimeType();
    $dir = "public/uploads/$directory/";

		// Setting credentials digitalocean
    $credentials = new Credentials(config('do.credentials.key'), config('do.credentials.secret'));

		// Setting S3 client for upload file
    $s3 = new S3Client([
        'version'     => 'latest',
        'region'      => config('do.region'),
        'credentials' => $credentials,
        'endpoint'    => config('services.proxy_cdn.url_upload') !== null 
            ? config('services.proxy_cdn.url_upload') . "/upload/" . config('do.endpoint') 
            : config('do.endpoint'),
        'http' => [
            'verify' => config('services.proxy_cdn.url_upload') === null *// Nonaktifkan verifikasi SSL jika tidak ada proxy*
        ]
    ]);

    *// Unggah file*
    $s3->putObject([
        'Bucket'     => config('do.bucket'),
        'Key'        => 'lpdp-500doktor/' . $dir . $filename,
        'SourceFile' => $file,
        'ContentType' => $mime,
    ]);

    return $dir . $filename; *// Kembalikan jalur file*
}