Laravel의 하위 폴더에 중복 파일을 방지하는 방법
P粉770375450
2023-07-31 16:12:39
<p>여러 파일을 동시에 업로드할 수 있는 추가 보기를 만들었습니다. 파일이 업로드되면 '도면/부품번호/유형/파일명.확장자'와 유사한 형식으로 파일 경로가 표시됩니다. 동일한 확장자를 가진 파일이 없는지 확인하기 위해 '드로잉' 폴더를 확인하고 싶습니다. 이것을 달성하는 방법은 무엇입니까? </p>
<올>
<li>도면/부품 번호1/유형1/파일 이름1.pdf</li>
<li>도면/부품번호2/유형2/파일 이름1.pdf</li>
<li>도면/부품 번호1/유형3/파일 이름1.pdf</li>
<li>도면/부품 번호1/파일 이름1.pdf</li>
드로잉/파일 이름1.pdf
절대로 받아들여지지 않습니다.</li>
</ol>
<p>내 기능은 다음과 같습니다. </p>
<pre class="brush:php;toolbar:false;">공개 함수 AddNewPart(요청 $request)
{
if (array_key_exists('드로잉파일',$data)) {
foreach($request->file('드로잉파일') as $key=>$file)
{
if ($data['fileupload_ID'][$key]==NULL) {
$extension=$file->getClientOriginalExtension();
$file_name2 = $file->getClientOriginalName();
$filepath='도면/'.$data['PartNumber'].'/'.$data['Type'][$key].'/'.$file_name2;
$file->move(public_path('드로잉/'.$data['PartNumber'].'/'.$data['Type'][$key].'/'), $file_name2);
$DocumentData2=array('유형'=>$data['유형'][$key],'fcontent'=>$file_name2,'condpartno'=>$data['PartNumber'],'fname'= >$파일 경로,
'드로잉번호'=>$data['드로잉번호'][$key],'DocumentType'=>$data['Type'][$key]);
DB::table('fileupload')->insert($DocumentData2);
}
}
}
}</pre>
<p><br /></p>
동일한 파일이 다른 하위 디렉터리에 여러 번 업로드되는 것을 방지하려면 Laravel의 파일 시스템을 활용하고 업로드하기 전에 파일이 존재하는지 확인할 수 있습니다.
File 파사드는 주어진 경로에 파일이 존재하는지 확인하는 데 사용할 수 있는 존재 메소드를 제공합니다.
수정 방법은 다음과 같습니다.
으아아아위 코드는 지정된 디렉터리에 파일이 없는 경우에만 업로드됩니다. 파일이 이미 존재하는 경우 '파일이 이미 존재합니다'라는 메시지와 함께 오류 응답이 반환됩니다.
주의해야 할 한 가지는 getClientOriginalName() 메서드의 동작입니다. 클라이언트 시스템에서 파일의 원래 이름을 반환하므로, 다른 클라이언트의 파일 이름이 같은 경우 문제가 발생할 수 있습니다. 이것이 문제라면 업로드할 때 고유한 명명 규칙을 구현하는 것을 고려해 보세요.
또한 파일 상단에서 필요한 클래스를 가져오고 필수 필드 누락이나 데이터베이스 삽입 실패와 같은 잠재적인 문제를 처리하도록 주의하세요.