Rumah > Soal Jawab > teks badan
P粉1542284832023-08-01 00:11:46
Jika anda ingin menghalang fail yang sama daripada dimuat naik beberapa kali dalam subdirektori yang berbeza, anda boleh memanfaatkan Sistem Fail Laravel dan menyemak sama ada fail itu wujud sebelum cuba memuat naiknya.
Fasad Fail menyediakan kaedah wujud yang boleh anda gunakan untuk menyemak sama ada fail dalam laluan tertentu wujud.
Begini cara anda boleh mengubah suainya:
use Illuminate\Support\Facades\File; public function AddNewPart(Request $request) { if (array_key_exists('DrawingFile',$request->all())) { foreach($request->file('DrawingFile') as $key=>$file) { if ($request->fileupload_ID[$key] == NULL) { $extension = $file->getClientOriginalExtension(); $file_name2 = $file->getClientOriginalName(); $filepath = 'Drawings/'.$request->PartNumber.'/'.$request->Type[$key].'/'.$file_name2; // Check if the file already exists before moving it if (!File::exists(public_path($filepath))) { $file->move(public_path('Drawings/'.$request->PartNumber.'/'.$request->Type[$key].'/'), $file_name2); $DocumentData2 = array( 'Type'=>$request->Type[$key], 'fcontent'=>$file_name2, 'condpartno'=>$request->PartNumber, 'fname'=>$filepath, 'DrawingNo'=>$request->DrawingNo[$key], 'DocumentType'=>$request->Type[$key] ); DB::table('fileupload')->insert($DocumentData2); } else { // You might want to return some feedback to the user here return response()->json([ 'error' => 'File already exists.' ], 400); } } } } }
Kod di atas hanya akan dimuat naik jika fail tidak wujud dalam direktori yang ditentukan. Jika fail sudah wujud, respons ralat dengan mesej 'Fail sudah wujud' dikembalikan.
Satu perkara yang perlu diperhatikan ialah kelakuan kaedah getClientOriginalName(). Ia akan mengembalikan nama asal fail daripada mesin klien, yang mungkin menyebabkan masalah jika fail daripada klien berbeza mempunyai nama yang sama. Jika ini adalah masalah, pertimbangkan untuk melaksanakan konvensyen penamaan yang unik semasa memuat naik.
Selain itu, ingat untuk mengimport kelas yang diperlukan di bahagian atas fail dan berhati-hati untuk mengendalikan sebarang isu yang berpotensi seperti kehilangan medan yang diperlukan atau sisipan pangkalan data yang gagal.