Maison > Questions et réponses > le corps du texte
P粉1542284832023-08-01 00:11:46
Si vous souhaitez empêcher le même fichier d'être téléchargé plusieurs fois dans différents sous-répertoires, vous pouvez profiter du système de fichiers de Laravel et vérifier si le fichier existe avant d'essayer de le télécharger.
La façade Fichier fournit une méthode existe que vous pouvez utiliser pour vérifier si un fichier dans un chemin donné existe.
Voici comment vous pouvez le modifier :
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); } } } } }
Le code ci-dessus ne sera téléchargé que si le fichier n'existe pas dans le répertoire spécifié. Si le fichier existe déjà, une réponse d'erreur avec le message « Le fichier existe déjà » est renvoyée.
Une chose à noter est le comportement de la méthode getClientOriginalName(). Il renverra le nom d'origine du fichier de la machine client, ce qui peut causer des problèmes si les fichiers de différents clients portent le même nom. Si cela pose un problème, envisagez de mettre en œuvre une convention de dénomination unique lors du téléchargement.
N'oubliez pas non plus d'importer les classes nécessaires en haut du fichier et de prendre soin de gérer tout problème potentiel tel que des champs obligatoires manquants ou des échecs d'insertion dans la base de données.