migrasi upload file ke s3 amazon

This commit is contained in:
Server D3 Linksehat
2025-08-25 09:14:11 +07:00
parent df02dc0c5f
commit ba2490147f
8 changed files with 167 additions and 34 deletions

View File

@@ -542,6 +542,7 @@ class RequestLogController extends Controller
'name' => File::getFileName('final-log-result', $id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'source' => env('FILESYSTEM_DISK'),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
@@ -558,6 +559,7 @@ class RequestLogController extends Controller
'name' => File::getFileName('final-log-diagnosis', $id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'source' => env('FILESYSTEM_DISK'),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
@@ -573,6 +575,7 @@ class RequestLogController extends Controller
'name' => File::getFileName('final-log-kondisi', $id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'source' => env('FILESYSTEM_DISK'),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
@@ -1150,13 +1153,14 @@ class RequestLogController extends Controller
$requestLog = RequestLog::findOrFail($id);
if ($request->hasFile('result_files')) {
foreach ($request->result_files as $file) {
$pathFile = File::storeFile('final-log-result', $id, $file);
$fileData = File::storeFile('final-log-result', $id, $file);
$requestLog->files()->updateOrCreate([
'type' => 'final-log-result',
'name' => File::getFileName('final-log-result', $id, $file),
'name' => $fileData['name'],
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'source' => env('FILESYSTEM_DISK'),
'path' => $fileData['path'],
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
'reason' => $request->reason,
@@ -1166,13 +1170,14 @@ class RequestLogController extends Controller
if ($request->hasFile('diagnosa_files')) {
foreach ($request->diagnosa_files as $file) {
$pathFile = File::storeFile('final-log-diagnosis', $id, $file);
$fileData = File::storeFile('final-log-diagnosis', $id, $file);
$requestLog->files()->updateOrCreate([
'type' => 'final-log-diagnosis',
'name' => File::getFileName('final-log-diagnosis', $id, $file),
'type' => 'final-log-result',
'name' => $fileData['name'],
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'source' => env('FILESYSTEM_DISK'),
'path' => $fileData['path'],
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
'reason' => $request->reason,
@@ -1182,13 +1187,14 @@ class RequestLogController extends Controller
if ($request->hasFile('kondisi_files')) {
foreach ($request->kondisi_files as $file) {
$pathFile = File::storeFile('final-log-kondisi', $id, $file);
$fileData = File::storeFile('final-log-kondisi', $id, $file);
$requestLog->files()->updateOrCreate([
'type' => 'final-log-kondisi',
'name' => File::getFileName('final-log-kondisi', $id, $file),
'type' => 'final-log-result',
'name' => $fileData['name'],
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'source' => env('FILESYSTEM_DISK'),
'path' => $fileData['path'],
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
'reason' => $request->reason,
@@ -1199,29 +1205,96 @@ class RequestLogController extends Controller
return Helper::responseJson(data: $request->toArray(), message: 'File Success Uploaded');
}
// public function requestFiles(Request $request, $id)
// {
// Helper::setCustomPHPIniSettings();
// $requestLog = RequestLog::findOrFail($id);
// // Daftar file yang akan diproses
// $fileTypes = [
// 'result_files' => 'final-log-result',
// 'diagnosa_files' => 'final-log-diagnosis',
// 'kondisi_files' => 'final-log-kondisi',
// ];
// foreach ($fileTypes as $inputName => $fileType) {
// if ($request->hasFile($inputName)) {
// foreach ($request->file($inputName) as $file) {
// // 1. Panggil method storeFile yang sudah diperbaiki
// $fileData = File::storeFile($fileType, $id, $file);
// dd($fileData);
// // 2. Perbaiki panggilan updateOrCreate
// $requestLog->files()->updateOrCreate(
// [
// 'original_name' => $file->getClientOriginalName(),
// ],
// [
// // Array 2: Data untuk di-update atau di-create
// 'name' => $fileData['name'],
// 'original_name' => $file->getClientOriginalName(),
// 'extension' => $file->getClientOriginalExtension(),
// 'source' => 's3', // Langsung set ke 's3' untuk file baru
// 'path' => $fileData['path'],
// 'created_by' => auth()->id(),
// 'updated_by' => auth()->id(),
// 'reason' => $request->reason,
// ]
// );
// }
// }
// }
// return Helper::responseJson(data: $requestLog->files, message: 'File Success Uploaded');
// }
public function deleteFiles(Request $request, $id)
{
// Path file yang akan dihapus
$path = 'public/' . $request->path;
// Ambil data file dari database
$file = File::where('path', $request->path)->first();
// Tentukan disk berdasarkan source
$disk = $file->source === 's3' ? 's3' : 'local';
// Menghapus file dari penyimpanan
if (Storage::exists($path)) {
Storage::delete($path);
// Path file sesuai yang disimpan di DB
$path = $file->path;
// Update entri file dari basis data
File::where('path', $request->path)->update([
'deleted_at' => Carbon::now(), // Gunakan Carbon untuk mendapatkan tanggal dan waktu saat ini
'deleted_by' => auth()->user()->id,
'reason' => $request->reason
// Hapus file dari storage (cek dulu ada atau tidak)
if (Storage::disk($disk)->exists($path)) {
Storage::disk($disk)->delete($path);
// Update status file di DB (soft delete + reason)
$file->update([
'deleted_at' => Carbon::now(),
'deleted_by' => auth()->id(),
'reason' => $request->reason,
]);
// Mengembalikan respons JSON sukses
return Helper::responseJson(data: $request->toArray(), message: 'File successfully deleted');
return Helper::responseJson(
data: $file->toArray(),
message: 'File successfully deleted'
);
} else {
// Update status file di DB (soft delete + reason)
$file->update([
'deleted_at' => Carbon::now(),
'deleted_by' => auth()->id(),
'reason' => $request->reason,
]);
return Helper::responseJson(
data: $file->toArray(),
message: 'File successfully deleted'
);
}
// Jika file tidak ditemukan di penyimpanan, kirim respons JSON gagal
return Helper::responseJson(data: $request->toArray(), message: 'File deletion failed');
// Jika file tidak ditemukan
return Helper::responseJson(
data: $file->toArray(),
message: 'File deletion failed'
);
}
public function cekphp(){
phpinfo();
}