andriajah Wed Mar 2021 1 year ago

Tutorial Laravel 8 Download File dari URL ke Folder Public Storage

Laravel 8 download file dari url ke storage. Dalam contoh file unduhan laravel dari folder penyimpanan publik ini, Anda akan belajar cara mengunduh atau menampilkan file dari folder public storage di aplikasi laravel.

Ikuti langkah-langkah di bawah ini dan download file dengan mudah dari folder public storage. Dan juga menampilkan file pada tampilan blade laravel:

Langkah 1: Route

Pertama-tama, Anda perlu menambahkan route berikut di file web.php. Jadi arahkan ke folder routes dan buka file web.php lalu perbarui route berikut sebagai berikut:

use App\Http\Controllers\FileController;
 
 
Route::get('view', [FileController::class, 'index']);
Route::get('get/{filename}', [FileController::class, 'getfile']);

Langkah 2: Buat File Controller

Selanjutnya, Arahkan ke app/controllers dan buat file controller bernama FileController.php. Kemudian perbarui metode berikut sebagai berikut:

function getFile($filename){
        $file=Storage::disk('public')->get($filename);
  
        return (new Response($file, 200))
              ->header('Content-Type', 'image/jpeg');
    }

Kode di atas akan mendownload file dari public storage dengan memberikan nama file dan mengembalikan respons dengan tipe konten yang benar.

Jika Anda ingin menampilkan file pada tampilan blade, maka Anda dapat memperbarui metode berikut ke dalam file controller Anda:

$files = Storage::files("public");
        $images=array();
        foreach ($files as $key => $value) {
            $value= str_replace("public/","",$value);
            array_push($images,$value);
        }
    return view('show', ['images' => $images]);

Kode di atas mendapatkan file gambar dari folder publi storage dan mengekstrak nama file ini dan Anda meneruskannya ke tampilan Anda.

Langkah 3: Buat Blade View

Sekarang, Arahkan ke  folder resources\view. Dan buat satu file view blade bernama show.blade.php. Kemudian perbarui kode berikut ke dalamnya:

@foreach($images as $image)
 
 <div> 
    <img src="{{route('getfile', $image)}}"  class="img-responsive" />
 </div>
                  
 
 @endforeach

Di Laravel 5,6,7,8, Anda dapat melakukan ini untuk file lokal untuk mengunduhnya:

return response()->download('path/to/file/image.jpg');

Tidak ada keajaiban, Anda harus mengunduh gambar eksternal menggunakan fungsi copy() , lalu mengirimkannya ke user sebagai response:

$filename = 'temp-image.jpg';
$tempImage = tempnam(sys_get_temp_dir(), $filename);
copy('https://my-cdn.com/files/image.jpg', $tempImage);
 
return response()->download($tempImage, $filename);

Perhatikan bahwa, jika Anda mendapatkan kesalahan berikut di aplikasi laravel, saat Anda bekerja dengan file atau penyimpanan laravel:

1: “class ‘app\http\controllers\file’ not found”.

Import  File di file controller Anda sebagai berikut:

use File;

2: “class ‘app\http\controllers\response’ not found”.

Import  Response di file controller Anda sebagai berikut:

use Response;

3: “class ‘app\http\controllers\storage’ not found”.

Import  Storage di file controller Anda sebagai berikut:

use Illuminate\Support\Facades\Storage;

Kesimpulan

Dalam tutorial ini, Anda telah mempelajari cara mendownload file dari folder public storage di aplikasi laravel dengan contoh.

download laravel file storage laravel laravel 8 laravel