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 Show Laravel 9 Tải xuống tệp từ URL đến thư mục lưu trữ công cộngThự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 đườngTrướ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ểnTiế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 BladeBâ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) 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('https://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ậnTrong 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 |