国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

如何在 Laravel 中防止子文件夾中的重復文件
P粉770375450
P粉770375450 2023-07-31 16:12:39
0
1
635
<p>我創(chuàng)建了一個添加視圖,可以同時上傳多個文件。當文件被上傳時,文件路徑會顯示為類似于 'Drawings/PartNumber/Type/filename.extension' 的格式。我想要在 'Drawings' 文件夾中檢查,確保任何文件都不能與擴展名相同。請問如何實現(xiàn)?</p> <ol> <li>Drawings/PartNumber1/Type1/filename1.pdf</li> <li>Drawings/PartNumber2/Type2/filename1.pdf</li> <li>Drawings/PartNumber1/Type3/filename1.pdf</li> <li>Drawings/PartNumber1/filename1.pdf</li> <li>Drawings/filename1.pdf never will be accepted.</li> </ol> <p>我的函數(shù)是:</p> <pre class="brush:php;toolbar:false;">public function AddNewPart(Request $request) { if (array_key_exists('DrawingFile',$data)) { foreach($request->file('DrawingFile') as $key=>$file) { if ($data['fileupload_ID'][$key]==NULL) { $extension=$file->getClientOriginalExtension(); $file_name2 = $file->getClientOriginalName(); $filepath='Drawings/'.$data['PartNumber'].'/'.$data['Type'][$key].'/'.$file_name2; $file->move(public_path('Drawings/'.$data['PartNumber'].'/'.$data['Type'][$key].'/'), $file_name2); $DocumentData2=array('Type'=>$data['Type'][$key],'fcontent'=>$file_name2,'condpartno'=>$data['PartNumber'],'fname'=>$filepath, 'DrawingNo'=>$data['DrawingNo'][$key],'DocumentType'=>$data['Type'][$key]); DB::table('fileupload')->insert($DocumentData2); } } } }</pre> <p><br /></p>
P粉770375450
P粉770375450

全部回復(1)
P粉154228483

如果您希望防止相同的文件在不同的子目錄中被多次上傳,您可以利用 Laravel 的文件系統(tǒng)(Filesystem)并在嘗試上傳文件之前檢查文件是否存在。

文件門面(File facade)提供了一個 exists 方法,您可以使用它來檢查給定路徑中的文件是否存在。

下面是您可能會修改的方法:


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);
                }
            }
        }
    }
}

上述代碼只會在指定目錄中不存在該文件時才進行上傳。如果文件已經(jīng)存在,則會返回一個帶有消息 '文件已存在' 的錯誤響應。

需要注意的一點是 getClientOriginalName() 方法的行為。它將返回來自客戶端機器的文件的原始名稱,如果來自不同客戶端的文件具有相同的名稱,可能會導致問題。如果這是一個問題,請考慮在上傳時實施唯一命名約定。

此外,請記住在文件的頂部導入必要的類,并注意處理所有潛在問題,如缺少必填字段或數(shù)據(jù)庫插入失敗。


最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板