현재 위치: > 최신 기사 목록> 간단하고 실용적인 파일 관리 시스템을 구현하기 위해 move_uploaded_file 함수를 결합하는 방법은 무엇입니까? 세부적인 설명

간단하고 실용적인 파일 관리 시스템을 구현하기 위해 move_uploaded_file 함수를 결합하는 방법은 무엇입니까? 세부적인 설명

gitbox 2025-06-22

PHP에서 파일 업로드는 매우 일반적인 요구 사항입니다. move_uploaded_file () 함수를 통해 업로드 된 파일을 임시 폴더에서 지정된 대상 디렉토리로 안전하게 이동시켜 파일 관리를 실현할 수 있습니다. 이 기사는 Move_Uploaded_File () 함수를 결합하여 간단하고 실용적인 파일 관리 시스템을 구축하는 방법을 소개합니다.

1. move_uploaded_file 함수를 이해하십시오

move_uploaded_file () 는 PHP의 내장 기능으로, 업로드 된 파일을 임시 디렉토리에서 대상 디렉토리로 이동시킵니다. 구문은 다음과 같습니다.

 <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">move_uploaded_file</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$destination</span></span><span> )
</span></span>
  • $ filename : 이동할 업로드 파일의 임시 파일 경로를 나타냅니다.

  • $ 대상 : 최종 저장된 파일의 대상 경로를 나타냅니다.

이 기능은 파일을 HTTP Post를 통해 업로드하고 임시 파일이 존재하는 경우에만 성공적으로 실행할 수 있습니다. 업로드 된 파일이 불법이거나 대상 경로가 치료할 수 없으면 함수는 False를 반환합니다.

2. 기본 파일 업로드 기능

먼저 사용자가 파일을 업로드 할 수있는 간단한 HTML 양식을 작성해야합니다. 샘플 코드는 다음과 같습니다.

 <span><span><span class="hljs-tag">&lt;<span class="hljs-name">form</span></span></span><span> </span><span><span class="hljs-attr">action</span></span><span>=</span><span><span class="hljs-string">"upload.php"</span></span><span> </span><span><span class="hljs-attr">method</span></span><span>=</span><span><span class="hljs-string">"post"</span></span><span> </span><span><span class="hljs-attr">enctype</span></span><span>=</span><span><span class="hljs-string">"multipart/form-data"</span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">label</span></span></span><span> </span><span><span class="hljs-attr">for</span></span><span>=</span><span><span class="hljs-string">"file"</span></span><span>&gt;파일 업로드를 선택하십시오:</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">label</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">input</span></span></span><span> </span><span><span class="hljs-attr">type</span></span><span>=</span><span><span class="hljs-string">"file"</span></span><span> </span><span><span class="hljs-attr">name</span></span><span>=</span><span><span class="hljs-string">"file"</span></span><span> </span><span><span class="hljs-attr">id</span></span><span>=</span><span><span class="hljs-string">"file"</span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">input</span></span></span><span> </span><span><span class="hljs-attr">type</span></span><span>=</span><span><span class="hljs-string">"submit"</span></span><span> </span><span><span class="hljs-attr">value</span></span><span>=</span><span><span class="hljs-string">"파일 업로드"</span></span><span>&gt;
</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">form</span></span></span><span>&gt;
</span></span>

이 양식에서 EncType = "multipart/form-data"는 파일을 올바르게 업로드 할 수 있도록 양식의 데이터 유형을 지정합니다. 입력 태그의 type = "file" 은 사용자가 파일을 선택할 수 있도록 사용됩니다.

3. 프로세스 파일 업로드

파일 업로드 ( upload.php 등)의 처리 스크립트에서 Move_Uploaded_File ()을 사용하여 파일을 임시 위치에서 지정된 대상 폴더로 이동합니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 디렉토리 업로드</span></span><span>
</span><span><span class="hljs-variable">$uploadDir</span></span><span> = </span><span><span class="hljs-string">'uploads/'</span></span><span>;

</span><span><span class="hljs-comment">// 대상 폴더가 존재하는지 확인하십시오,존재하지 않으면 작성하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$uploadDir</span></span><span>)) {
    </span><span><span class="hljs-title function_ invoke__">mkdir</span></span><span>(</span><span><span class="hljs-variable">$uploadDir</span></span><span>, </span><span><span class="hljs-number">0755</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
}

</span><span><span class="hljs-comment">// 파일 업로드가 있는지 확인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>]) &amp;&amp; </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>][</span><span><span class="hljs-string">'error'</span></span><span>] == </span><span><span class="hljs-number">0</span></span><span>) {
    </span><span><span class="hljs-comment">// 获取파일 업로드的信息</span></span><span>
    </span><span><span class="hljs-variable">$fileName</span></span><span> = </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>][</span><span><span class="hljs-string">'name'</span></span><span>];  </span><span><span class="hljs-comment">// 파일 이름</span></span><span>
    </span><span><span class="hljs-variable">$fileTmpName</span></span><span> = </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>][</span><span><span class="hljs-string">'tmp_name'</span></span><span>];  </span><span><span class="hljs-comment">// 임시 파일 경로</span></span><span>
    </span><span><span class="hljs-variable">$fileSize</span></span><span> = </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>][</span><span><span class="hljs-string">'size'</span></span><span>];  </span><span><span class="hljs-comment">// 파일 크기</span></span><span>
    </span><span><span class="hljs-variable">$fileType</span></span><span> = </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>][</span><span><span class="hljs-string">'type'</span></span><span>];  </span><span><span class="hljs-comment">// 파일 유형</span></span><span>

    </span><span><span class="hljs-comment">// 대상 파일 경로를 설정하십시오</span></span><span>
    </span><span><span class="hljs-variable">$destination</span></span><span> = </span><span><span class="hljs-variable">$uploadDir</span></span><span> . </span><span><span class="hljs-title function_ invoke__">basename</span></span><span>(</span><span><span class="hljs-variable">$fileName</span></span><span>);

    </span><span><span class="hljs-comment">// 检查파일 크기(예를 들어, 최대 파일 제한은 다음과 같습니다 5MB)</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$fileSize</span></span><span> &gt; </span><span><span class="hljs-number">5</span></span><span> * </span><span><span class="hljs-number">1024</span></span><span> * </span><span><span class="hljs-number">1024</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"너무 큰 파일,최대 허용 5MB。"</span></span><span>;
        </span><span><span class="hljs-keyword">exit</span></span><span>;
    }

    </span><span><span class="hljs-comment">// 파일을 대상 디렉토리로 이동합니다</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">move_uploaded_file</span></span><span>(</span><span><span class="hljs-variable">$fileTmpName</span></span><span>, </span><span><span class="hljs-variable">$destination</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일 업로드를 성공적으로 업로드하십시오!파일 이름:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">htmlspecialchars</span></span><span>(</span><span><span class="hljs-variable">$fileName</span></span><span>);
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일 업로드가 실패했습니다!"</span></span><span>;
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일 업로드 또는 파일 업로드 오류가 없습니다!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

위의 코드에서 먼저 파일 업로드가 있는지 확인하고 업로드 프로세스 중 오류가 있는지 확인합니다. 그런 다음 파일의 임시 경로와 파일 이름을 가져오고 파일의 최종 저장 위치로 대상 폴더 ( 업로드/ )를 지정합니다. 대상 폴더가 존재하지 않으면 스크립트가 폴더를 자동으로 작성합니다.

다음으로 Move_Uploaded_File () 함수를 사용하여 파일을 임시 경로에서 대상 폴더로 이동합니다. 이동이 성공하면 스크립트가 성공 메시지를 출력합니다.

4. 향상된 파일 관리 기능

기본 파일 업로드 기능을 통해 파일 관리 시스템의 기능을 더욱 향상시키고 다음과 같은 공통 작업을 제공 할 수 있습니다.

1. 업로드 된 파일을 나열하십시오

대상 디렉토리에서 파일 목록을 읽어 업로드 된 모든 파일을 나열 할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_diff</span></span><span>(</span><span><span class="hljs-title function_ invoke__">scandir</span></span><span>(</span><span><span class="hljs-variable">$uploadDir</span></span><span>), </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-string">'..'</span></span><span>, </span><span><span class="hljs-string">'.'</span></span><span>));

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;ul&gt;"</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$files</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;li&gt;&lt;a href='<span class="hljs-subst">{$uploadDir}</span></span></span><span><span class="hljs-subst">{$file}</span></span><span>'&gt;</span><span><span class="hljs-subst">{$file}</span></span><span>&lt;/a&gt;&lt;/li&gt;";
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;/ul&gt;"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

이 코드는 scandir () 함수를 사용하여 디렉토리의 모든 파일을 얻고 필터링합니다 . 그리고 .. 그리고 파일 이름을 하이퍼 링크로 표시합니다.

2. 파일을 삭제합니다

파일 삭제 기능을 제공 할 수도 있습니다. 삭제 링크를 클릭하면 사용자가 지정된 파일을 삭제할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'delete'</span></span><span>])) {
    </span><span><span class="hljs-variable">$fileToDelete</span></span><span> = </span><span><span class="hljs-variable">$uploadDir</span></span><span> . </span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'delete'</span></span><span>];
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$fileToDelete</span></span><span>)) {
        </span><span><span class="hljs-title function_ invoke__">unlink</span></span><span>(</span><span><span class="hljs-variable">$fileToDelete</span></span><span>);
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일이 삭제되었습니다: "</span></span><span> . </span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'delete'</span></span><span>];
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일이 존재하지 않습니다!"</span></span><span>;
    }
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

파일 목록에서 각 파일에 대한 삭제 링크를 제공하며 클릭 후 삭제 작업이 트리거됩니다. Unlink () 함수는 파일을 삭제하는 데 사용됩니다.

3. 파일 변경

파일 변경은 파일 관리 시스템에서 공통 작업입니다. 파일의 이름 바꾸기 기능을 제공 할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'rename'</span></span><span>]) &amp;&amp; </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'new_name'</span></span><span>])) {
    </span><span><span class="hljs-variable">$oldFile</span></span><span> = </span><span><span class="hljs-variable">$uploadDir</span></span><span> . </span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'rename'</span></span><span>];
    </span><span><span class="hljs-variable">$newFile</span></span><span> = </span><span><span class="hljs-variable">$uploadDir</span></span><span> . </span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'new_name'</span></span><span>];

    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">rename</span></span><span>(</span><span><span class="hljs-variable">$oldFile</span></span><span>, </span><span><span class="hljs-variable">$newFile</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일 이름을 성공적으로 바꿉니다!"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"이름 바꾸지 실패했습니다!"</span></span><span>;
    }
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

양식을 제출함으로써 사용자는 파일의 새 파일 이름을 지정할 수 있습니다. Rename () 함수는 파일을 이전 이름에서 새 이름으로 변경합니다.

5. 요약

PHP는 move_uploaded_file () 함수를 결합하여 간단하고 실용적인 파일 관리 시스템을 구현할 수 있습니다. 이 시스템은 파일 업로드를 지원할뿐만 아니라 파일 목록, Deletion 및 Renaming과 같은 공통 작업을 제공합니다. 파일 관리 시스템을 구현할 때는 대상 폴더의 권한이 올바르게 설정되고 파일 크기, 유형 등이 시스템의 보안 및 안정성을 향상시키기 위해 적절하게 확인해야합니다.

위의 단계를 통해 기본 파일 업로드 및 관리 시스템을 신속하게 구축하고 필요에 따라 더 많은 기능을 더 확장 할 수 있습니다.