Upload và remove hình ảnh trong laravel

Trong bài này mình sẽ hướng dẫn các bạn viết 1 class dùng để upload và remove hình ảnh trong laravel.
 - Đầu tiên ta tạo class Gallery và tạo 2 biến dùng để khai báo đường dẫn và nơi lưu trữ file.

 class Gallery  
 {  
   private $uploadDir;  
   private $uploadFolder;  
 - Tiếp theo tạo hàm khởi tạo để set giá trị cho 2 biến trên. Ở đây mình sẽ lưu trong folder uploads:

   public function __construct()  
   {  
     $this->uploadDir = public_path('uploads');  
     $this->uploadFolder = 'uploads/';  
   }  
- Tiếp theo mình sẽ viết 1 số hàm cần thiết trong việc upload và xóa file.

 // Lay filename cua file khong chua phan dinh dang file  
   private function getFileNamewithoutExtension($originalFileName, $extensionFileName)  
   {  
     return substr($originalFileName, 0, strlen($originalFileName) - (strlen($extensionFileName) + 1));  
   }  
   //Kiem tra file ton tai hay khong  
   private function isExistedFile($originalFileName)  
   {  
     return File::exists($this->uploadDir. '/' . $originalFileName);  
   }  
   //Tao ra file name khong trung voi cac file khac  
   private function createUniqueFileName($originalFileName, $extensionFileName)  
   {  
     $fileName = '';  
     if ($this->isExistedFile($originalFileName))  
     {  
       $fileNamewithoutExtension = $this->getFileNamewithoutExtension($originalFileName, $extensionFileName);  
       $fileName = $fileNamewithoutExtension. uniqid('_'). '.'. $extensionFileName;  
     }  
     else $fileName = $originalFileName;  
     return $fileName;  
   }  
Lưu ý: 
 + File input HTML trong view của mình có dạng <input type='file' name='photo' ...>.
 + Ở đây trong phương thức createUniqueFileName mình có sử dụng phương thức uniqid nhằm tạo ra 1 chuỗi số duy nhất nhằm tránh trùng lặp trong lúc tạo ra filename mới của file. (Xem thêm tại: http://php.net/manual/en/function.uniqid.php).
- Giờ là 2 phương thức chính upload và remove file

 // Upload file  
   public function uploadPhoto($request)  
   {
     $imageFileName = null; 
     if ($request->hasFile('photo'))  
     {  
       $originalFileName = $request->file('photo')->getClientOriginalName();  
       $extensionFileName = $request->file('photo')->getClientOriginalExtension();  
       $imageFileName = $this->createUniqueFileName($originalFileName, $extensionFileName);  
       $request->file('photo')->move($this->uploadDir, $imageFileName);  
     }  
     return $imageFileName;  
   }  
   // Xoa file  
   public function removePhoto($originalFileName)  
   {  
     if ($this->isExistedFile($originalFileName)) File::delete($this->uploadFolder. $originalFileName);  
   }  
- Full code toàn bộ class

 <?php  
 namespace App\Library;  
 use File;  
 class Gallery  
 {  
   private $uploadDir;  
   private $uploadFolder;  
   public function __construct()  
   {  
     $this->uploadDir = public_path('uploads');  
     $this->uploadFolder = 'uploads/';  
   }  
   // Upload file  
   public function uploadPhoto($request)  
   { 
     $imageFileName = null; 
     if ($request->hasFile('photo'))  
     {  
       $originalFileName = $request->file('photo')->getClientOriginalName();  
       $extensionFileName = $request->file('photo')->getClientOriginalExtension();  
       $imageFileName = $this->createUniqueFileName($originalFileName, $extensionFileName);  
       $request->file('photo')->move($this->uploadDir, $imageFileName);  
     }  
     return $imageFileName;  
   }  
   // Xoa file  
   public function removePhoto($originalFileName)  
   {  
     if ($this->isExistedFile($originalFileName)) File::delete($this->uploadFolder. $originalFileName);  
   }  
   // Lay filename cua file khong chua phan dinh dang file  
   private function getFileNamewithoutExtension($originalFileName, $extensionFileName)  
   {  
     return substr($originalFileName, 0, strlen($originalFileName) - (strlen($extensionFileName) + 1));  
   }  
   //Kiem tra file ton tai hay khong  
   private function isExistedFile($originalFileName)  
   {  
     return File::exists($this->uploadDir. '/' . $originalFileName);  
   }  
   //Tao ra file name khong trung voi cac file khac  
   private function createUniqueFileName($originalFileName, $extensionFileName)  
   {  
     $fileName = '';  
     if ($this->isExistedFile($originalFileName))  
     {  
       $fileNamewithoutExtension = $this->getFileNamewithoutExtension($originalFileName, $extensionFileName);  
       $fileName = $fileNamewithoutExtension. uniqid('_'). '.'. $extensionFileName;  
     }  
     else $fileName = $originalFileName;  
     return $fileName;  
   }  
 }  

Nhận xét

Đăng nhận xét

Bài đăng phổ biến từ blog này

Mã hóa dữ liệu trong Database

Chuyển đổi HTML sang PDF sử dụng Javascript

Dùng Ajax để phân trang trong Datatable