Tệp tải xuống Laravel từ API

Laravel 9 tải xuống tệp từ URL để lưu trữ. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tải xuống hoặc hiển thị tệp từ thư mục lưu trữ công cộng trong ứng dụng laravel

Laravel 9 Tải xuống tệp từ URL đến thư mục lưu trữ công cộng

Thực hiện theo các bước dưới đây và dễ dàng tải xuống các tệp từ thư mục lưu trữ công cộng. Và cũng như hiển thị các tệp trên chế độ xem phiến laravel

Bước 1. tuyến đường

Trước hết, chúng ta cần thêm các route sau trên web. tập tin php. Vì vậy, điều hướng đến thư mục route và mở web. php sau đó cập nhật các tuyến sau như sau

  use App\Http\Controllers\FileController;


  Route::get['view', [FileController::class, 'index']];
  Route::get['get/{filename}', [FileController::class, 'getfile']];

Bước 2. Tạo tập tin điều khiển

Tiếp theo, Điều hướng đến ứng dụng/bộ điều khiển và tạo tệp bộ điều khiển có tên FileController. php. Sau đó cập nhật các phương pháp sau như sau

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

Đoạn mã trên sẽ tải xuống các tệp từ bộ nhớ chung bằng cách đặt tên tệp và trả về phản hồi với loại nội dung chính xác

Nếu chúng tôi muốn hiển thị các tệp trên chế độ xem phiến, vì vậy chúng tôi có thể cập nhật các phương thức sau vào tệp điều khiển

$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]];

Đoạn mã trên lấy các tệp hình ảnh từ thư mục lưu trữ công cộng và trích xuất tên của các tệp này và chúng tôi chuyển chúng để xem

Bước 3. Tạo Chế độ xem Blade

Bây giờ, Điều hướng đến thư mục 

function getFile[$filename]{
    	$file=Storage::disk['public']->get[$filename];
 
		return [new Response[$file, 200]]
              ->header['Content-Type', 'image/jpeg'];
    }
4 . Và tạo 1 file blade view tên là show. lưỡi. php. Sau đó cập nhật đoạn mã sau vào nó

 @foreach[$images as $image]
 
  
@endforeach

Trong Laravel 5,6,7,8,9, chúng tôi có thể thực hiện việc này đối với tệp cục bộ để tải xuống

return response[]->download['path/to/file/image.jpg'];

Không có phép thuật nào cả, chúng ta nên tải xuống hình ảnh bên ngoài bằng chức năng 

function getFile[$filename]{
    	$file=Storage::disk['public']->get[$filename];
 
		return [new Response[$file, 200]]
              ->header['Content-Type', 'image/jpeg'];
    }
0, sau đó gửi cho người dùng trong phản hồi

$filename = 'temp-image.jpg';
$tempImage = tempnam[sys_get_temp_dir[], $filename];
copy['//my-cdn.com/files/image.jpg', $tempImage];

return response[]->download[$tempImage, $filename];

Lưu ý rằng, nếu chúng tôi gặp các lỗi sau trong ứng dụng laravel, khi chúng tôi đang làm việc với các tệp hoặc bộ lưu trữ laravel

1. "không tìm thấy lớp 'ứng dụng\http\bộ điều khiển\tệp'"

Nhập 

function getFile[$filename]{
    	$file=Storage::disk['public']->get[$filename];
 
		return [new Response[$file, 200]]
              ->header['Content-Type', 'image/jpeg'];
    }
1 vào tệp bộ điều khiển như sau

________số 8

2. "không tìm thấy lớp 'app\http\controllers\response'"

Nhập 

function getFile[$filename]{
    	$file=Storage::disk['public']->get[$filename];
 
		return [new Response[$file, 200]]
              ->header['Content-Type', 'image/jpeg'];
    }
2 vào tệp bộ điều khiển như sau

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

3. "không tìm thấy lớp 'app\http\controllers\storage'"

Nhập 

function getFile[$filename]{
    	$file=Storage::disk['public']->get[$filename];
 
		return [new Response[$file, 200]]
              ->header['Content-Type', 'image/jpeg'];
    }
3 vào tệp bộ điều khiển như sau

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

Phần kết luận

Trong hướng dẫn này, chúng ta đã học cách tải xuống tệp từ thư mục lưu trữ công cộng trong ứng dụng laravel với ví dụ

Hôm nay mình sẽ hướng dẫn các bạn cách download file trong laravel 8. chúng tôi sẽ hiển thị ví dụ về tải xuống phản hồi với tệp trong laravel 8. Đôi khi, chúng tôi yêu cầu trả về phản hồi với tệp tải xuống từ phương thức của bộ điều khiển như tạo hóa đơn và cung cấp để tải xuống, v.v. Laravel 8 cung cấp cho chúng tôi phản hồi [] với phương thức tải xuống theo cách mà chúng tôi có thể thực hiện

Trong blog này, Đối số đầu tiên của tải xuống [] tôi phải cung cấp đường dẫn của tệp tải xuống. Chúng tôi có thể đổi tên tệp tải xuống bằng cách chuyển đối số thứ hai của tải xuống[]. Chúng tôi cũng có thể đặt tiêu đề của tệp bằng cách chuyển đối số thứ ba

Vì vậy, trước tiên tôi sẽ tạo tuyến đường mới cho ví dụ của chúng tôi như dưới đây

tuyến đường/web. php

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

Bây giờ, tôi phải thêm một phương thức "downloadFile[]" vào DownloadFileController của mình. Nếu bạn không có DownloadFileController thì bạn có thể sử dụng bộ điều khiển của riêng mình như dưới đây

Chủ Đề