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

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

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