backend dan penyesian upload file dinamis approval notifikasi

This commit is contained in:
2025-09-11 09:47:42 +07:00
parent 6a4aaff628
commit 3c9066edc6
9 changed files with 375 additions and 24 deletions

View File

@@ -111,28 +111,62 @@ class File extends Model
// return $path;
// }
// public static function storeFile($type, $id, $file)
// {
// // Pastikan directory tidak punya trailing slash
// $directory = rtrim(self::getDirectory($type), '/');
// // Buat nama file yang unik dan aman
// $originalName = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
// $extension = $file->getClientOriginalExtension();
// $safeName = Str::slug($originalName);
// $uniqueName = $safeName . '-' . uniqid() . '.' . $extension;
// // Upload file ke disk 's3' dengan visibility 'public'
// $path = Storage::disk('s3')->putFileAs(
// $directory,
// $file,
// $uniqueName,
// 'public'
// );
// // Kembalikan path dan nama unik agar bisa digunakan di controller
// return [
// 'path' => $directory . '/' . $uniqueName, // hasil konsisten
// 'name' => $uniqueName,
// ];
// }
public static function storeFile($type, $id, $file)
{
// Pastikan directory tidak punya trailing slash
// 1. Ambil nama disk dari konfigurasi default
// Nilainya akan 'public', 'local', atau 's3' tergantung .env Anda
$disk = config('filesystems.default');
$directory = rtrim(self::getDirectory($type), '/');
// Buat nama file yang unik dan aman
// Buat nama file yang unik dan aman (kode Anda sudah bagus)
$originalName = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
$extension = $file->getClientOriginalExtension();
$safeName = Str::slug($originalName);
$uniqueName = $safeName . '-' . uniqid() . '.' . $extension;
// Upload file ke disk 's3' dengan visibility 'public'
$path = Storage::disk('s3')->putFileAs(
$directory,
$file,
$uniqueName,
'public'
// 2. Gunakan disk yang sudah dinamis
$path = Storage::disk($disk)->putFileAs(
$directory,
$file,
$uniqueName
);
// Kembalikan path dan nama unik agar bisa digunakan di controller
// 3. (Sangat Direkomendasikan) Tambahkan penanganan error
if ($path === false) {
Log::error("Gagal menyimpan file ke disk '{$disk}' pada path: {$directory}/{$uniqueName}");
return false; // Kembalikan false jika upload gagal
}
// 4. Kembalikan path asli dari hasil upload untuk konsistensi
return [
'path' => $directory . '/' . $uniqueName, // hasil konsisten
'path' => $path, // Gunakan $path yang dikembalikan oleh Storage
'name' => $uniqueName,
];
}