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.
+ 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
- Đầ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;
}
}
hay lam
Trả lờiXóaCảm ơn bạn.
XóaThe Best Slots | Casino Roll
Trả lờiXóaThe best slots at Casino Roll. If you love table games, https://septcasino.com/review/merit-casino/ to play blackjack, you have herzamanindir to casino-roll.com bet twice 출장안마 for the dealer to win. The dealer must filmfileeurope.com