Upload nhiều file trong php

Upload file có lẽ rằng là phần cơ bản của bất kì dự án nào tuy vậy với những newbie thì gồm thể chạm mặt vài vụ việc lúc new tiếp xúc, lấy một ví dụ như thực hiện upload nhiều files thuộc lúc gồm validation sẽ không biết làm cho như nào. Trong nội dung bài viết này tôi sẽ tập trung vào một trong những phần nhỏ đó trong vô số nhiều thứ rất có thể làm khi upload những file lên. Tôi áp dụng thư mục storage của Laravel và có DB lúc upload files lên phối hợp dùng Bootstrap để code được dễ dàng hơn.

Bạn đang xem: Upload nhiều file trong php

*

Model với Migration

Trước hết tôi sẽ đi chế tạo ra mã sản phẩm và bảng địa điểm tôi vẫn lưu files. Trong thư mục root của áp dụng tôi chạy lệnh sau :

php artisan make:model hàng hóa -mphp artisan make:model ProductDetails -mKhi migration và model đã được tạo thành công thì mang lại file app/Product.php với thêm code protected $fillable = <"name">; vào :

namespace App;use IlluminateDatabaseEloquentModel;class sản phẩm extends Model protected $fillable = <"name">;Sau đó mang lại thư mục database/migration cùng mở file migration bạn sẽ nhìn thấy cấu tạo mặc định có trong đó gồm id và timestamps, hãy thêm $table->string("name"); vào như dưới :

use IlluminateSupportFacadesSchema;use IlluminateDatabaseSchemaBlueprint;use IlluminateDatabaseMigrationsMigration;class ProductsTable extends Migration /** * Run the migrations. * *
return void */ public function up() Schema::create("products", function (Blueprint $table) $table->increments("id"); $table->string("name"); $table->timestamps(); ); /** * Reverse the migrations. * *
return void */ public function down() Schema::dropIfExists("products"); Còn ProductDetails vẫn thêm code như sau :

namespace App;use IlluminateDatabaseEloquentModel;class ProductDetails extends Model protected $fillable = <"product_id", "filename">; public function product() return $this->belongsTo("AppProduct"); ?>Trong đoạn code trên tôi thực hiện belongsTo cũng chính vì ProductDetails là trực thuộc về bảng Product cùng product_id là khoá ngoại, cái này là quan hệ nghịch đảo (inverse relation) trong Laravel.

Xem thêm: Top 10 Thuốc Giảm Cân Của Pháp, Liệu Trình Detox & Giảm Cân Của Arkopharma (Pháp)

Bạn hãy mở file tương ứng của productdetails trong thư mục database/migration, tương tự như product bạn sẽ thấy gồm id và timestamps, hãy cung cấp đoạn code bên dưới :

$table->integer("product_id")->unsigned(); $table->foreign("product_id")->references("id")->on("products"); $table->string("filename");thành nội dung tương đối đầy đủ như sau :

use IlluminateSupportFacadesSchema;use IlluminateDatabaseSchemaBlueprint;use IlluminateDatabaseMigrationsMigration;class CreateProductDetailsTable extends Migration /** * Run the migrations. * *
return void */ public function up() Schema::create("product_details", function (Blueprint $table) $table->increments("id"); $table->integer("product_id")->unsigned(); $table->foreign("product_id")->references("id")->on("products"); $table->string("filename"); $table->timestamps(); ); /** * Reverse the migrations. * *
return void */ public function down() Schema::dropIfExists("product_details"); ?>Tiếp theo, trong app/Providers/AppServiceProvider.php hãy thiết lập cấu hình mặc định độ dài của chuỗi là 200 :

Trong vận dụng Laravel thiết lập cấu hình DB được handle vì hai files env với config/database.php, tôi đã chế tạo DB với tên là multiupload và tùy chỉnh cấu hình kết nối tới nó.

CREATE SCHEMA `multiupload` default CHARACTER mix utf8 COLLATE utf8_unicode_ci ;// config/database.php "default" => env("DB_CONNECTION", "mysql"), // giản lược "mysql" => < "driver" => "mysql", "host" => env("DB_HOST", "127.0.0.1"), "port" => env("DB_PORT", "3306"), "database" => env("DB_DATABASE", "multiupload"), "username" => env("DB_USERNAME", "root"), "password" => env("DB_PASSWORD", "xxx"), "unix_socket" => env("DB_SOCKET", ""), "charset" => "utf8", "collation" => "utf8_unicode_ci", "prefix" => "", "strict" => true, "engine" => null, >, // giản lược?>// .envDB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=multiuploadDB_USERNAME=rootDB_PASSWORD=xxxHãy chạy lệnh sau để tạo ra bảng vào DB đó :

php artisan migrateBạn đánh giá DB thì vẫn thấy gồm 5 bảng được tạo thành công như hình

*

Route, Controller, View

Thiết lập Route

Route tùy chỉnh URL của áp dụng và những phương thức của cho URL đó. Routes được lưu ở vào routes/web.php và cất code sau :

Route::get("/multiuploads", "");Route::post("/multiuploads", "");

Tạo Controller

Chỉ đề nghị chạy lệnh sau các bạn sẽ tạo ra được Controller :

php artisan make:controller UploadControllerKế mang lại mở app/Http/Controller/UploadController.php rồi thêm vào code như sau:

namespace AppHttpControllers;use IlluminateHttpRequest;class UploadController extends Controller public function uploadForm() return view("upload_form"); public function uploadSubmit(Request $request) // coding …. ?>

Tạo View (upload_form.blade.php)

Trong View tệp tin tôi áp dụng Bootstrap để stlyle mang lại code, sử dụng jQuery, JavaScript.

getLocale() }}">Laravel Multi Uploading Example
if (count($errors) > 0)
foreach ($errors->all() as $error) $error
endforeach
endif