PHP 파일 업로드 여러 파일 업로드
헛소리를 하기 전에 먼저 이 글은 PHP 단일 파일 업로드 마스터링을 기반으로 하고 있으므로 여기서는 파일 업로드 서버 구성 및 양식 설정에 대해 자세히 설명하지 않겠습니다.
할 말은 없지만 바로 본론으로 들어가겠습니다. 요청 페이지를 작성하는 방법에는 두 가지가 있습니다. (양식 부분만 제시되며, 파일 3개 업로드를 예로 듭니다.)
<span><</span><span>form </span><span>action</span><span>="doAction.php"</span><span> method</span><span>="post"</span><span> enctype</span><span>="multipart/form-data"</span><span>></span><span> 请选择我的上传文件 </span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfile[]"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfile[]"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfile[]"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="submit"</span><span> value</span><span>="上传"</span><span>/></span><span></</span><span>form</span><span>></span>
<span><</span><span>form </span><span>action</span><span>="doAction.php"</span><span> method</span><span>="post"</span><span> enctype</span><span>="multipart/form-data"</span><span>></span><span> 请选择我的上传文件 </span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfil1"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfil2"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfil3"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="submit"</span><span> value</span><span>="上传"</span><span>/></span><span></</span><span>form</span><span>></span>
둘을 비교해 보면 첫 번째는 이름을 배열 형태로 설정한 반면, 두 번째는 이름만 다른 것으로 나타났다. 우리가 설정할 때 쉽게 생각할 수 있는 방법이다.
표면적으로는 약간의 차이만 보이지만 실제로 doAction.php 페이지에 제출된 $_FILES는 매우 다릅니다.
$_FILES의 첫 번째 유형은 3차원 배열이고 두 번째 유형은 2차원 배열입니다.
분명히 우리는 첫 번째를 다루겠습니다. $_FILES의 두 가지 형식이 더 편리합니다. 물론 첫 번째 형식의 $_FILES를 두 번째 형식으로 변환하는 방법도 다음과 같이 찾을 수 있습니다.
<span>function</span><span> getFiles(){ </span><span>foreach</span>(<span>$_FILES</span><span>as</span><span>$file</span><span>){ </span><span>$fileNum</span>=<span>count</span>(<span>$file</span>['name'<span>]); </span><span>if</span> (<span>$fileNum</span>==1<span>) { </span><span>$files</span>=<span>$file</span><span>; }</span><span>else</span><span>{ </span><span>for</span> (<span>$i</span>=0; <span>$i</span> < <span>$fileNum</span>; <span>$i</span>++<span>) { </span><span>$files</span>[<span>$i</span>]['name']=<span>$file</span>['name'][<span>$i</span><span>]; </span><span>$files</span>[<span>$i</span>]['type']=<span>$file</span>['type'][<span>$i</span><span>]; </span><span>$files</span>[<span>$i</span>]['tmp_name']=<span>$file</span>['tmp_name'][<span>$i</span><span>]; </span><span>$files</span>[<span>$i</span>]['error']=<span>$file</span>['error'][<span>$i</span><span>]; </span><span>$files</span>[<span>$i</span>]['size']=<span>$file</span>['size'][<span>$i</span><span>]; } } } </span><span>return</span><span>$files</span><span>; }</span>
이 함수를 통해 $_FILES를 다음 형식으로 변환합니다. 다음 형식:
현재 두 가지 업로드 방법은 동일한 시작 줄에 있습니다. 다음 작업은 각 파일을 업로드하는 uploadFile() 함수를 작성하는 것입니다. 이 기사의 초점이기도 합니다.
파일 업로드 기능:
<span>function</span> uploadFile(<span>$file</span>,<span>$path</span>='./uploads',<span>$max_size</span>,<span>$allowExt</span><span>){ </span><span>$filename</span>=<span>$file</span>['name'<span>]; </span><span>$type</span>=<span>$file</span>['type'<span>]; </span><span>$temp_name</span>=<span>$file</span>['tmp_name'<span>]; </span><span>$error</span>=<span>$file</span>['error'<span>]; </span><span>$size</span>=<span>$file</span>['size'<span>]; </span><span>if</span> (<span>$error</span>==<span>UPLOAD_ERR_OK) { </span><span>if</span> (<span>$size</span>><span>$max_size</span><span>) { </span><span>$res</span>['mes']=<span>$filename</span>."文件超过规定上传大小"<span>; } </span><span>$ext</span>=getExt(<span>$filename</span><span>); </span><span>if</span> (!<span>in_array</span>(<span>$ext</span>, <span>$allowExt</span><span>)) { </span><span>$res</span>['mes']=<span>$filename</span>.'文件名不合乎规范'<span>; } </span><span>if</span> (!<span>is_uploaded_file</span>(<span>$temp_name</span><span>)) { </span><span>$res</span>['mes']=<span>$filename</span>."文件不是通过HTTP POST 方法上传上传过来的"<span>; } </span><span>if</span> (@<span>$res</span><span>) { </span><span>return</span><span>$res</span><span>; } </span><span>if</span> (!<span>file_exists</span>(<span>$path</span><span>)) { </span><span>mkdir</span>(<span>$path</span>,0777,<span>true</span><span>); </span><span>chmod</span>(<span>$path</span>, 0777<span>); } </span><span>$fname</span>=<span>getUniName(); </span><span>$destination</span>=<span>$path</span>.'/'.<span>$fname</span>.'.'.<span>$ext</span><span>; </span><span>if</span> (<span>move_uploaded_file</span>(<span>$temp_name</span>, <span>$destination</span><span>)) { </span><span>$res</span>['mes']=<span>$filename</span>.'上传成功'<span>; </span><span>$res</span>['dest']=<span>$destination</span><span>; }</span><span>else</span><span>{ </span><span>$res</span>['mes']=<span>$filename</span>."文件上传失败"<span>; } }</span><span>else</span><span>{ </span><span>switch</span> (<span>$error</span><span>) { </span><span>case</span> '1': <span>$res</span>['mes']="超过了配置文件上传文件的大小"<span>; </span><span>break</span><span>; </span><span>case</span> '2': <span>$res</span>['mes']="超过表单设置上传文件文件的大小"<span>; </span><span>break</span><span>; </span><span>case</span> '3': <span>$res</span>['mes']="文件部分被上传"<span>; </span><span>break</span><span>; </span><span>case</span> '4': <span>$res</span>['mes']="没有文件被上传"<span>; </span><span>break</span><span>; </span><span>case</span> '6': <span>$res</span>['mes']="没有找到临时目录"<span>; </span><span>break</span><span>; </span><span>case</span> '7': <span>$res</span>['mes']="文件不可写"<span>; </span><span>break</span><span>; </span><span>default</span>: <span>$res</span>['mes']="上传文件失败"<span>; </span><span>break</span><span>; } } </span><span>return</span><span>$res</span><span>; }</span>
두 가지 작은 기능도 포함됩니다:
<span>/*</span><span>* * 获得文件扩展名 * @param string $filename 上传文件名 * @return string 返回扩展名 </span><span>*/</span><span>function</span> getExt(<span>$filename</span><span>){ </span><span>$arr</span>=<span>explode</span>('.', <span>basename</span>(<span>$filename</span><span>)); </span><span>return</span><span>end</span>(<span>$arr</span><span>); } </span><span>/*</span><span>* * 获得文件唯一扩展名 * @return string 经过md5后生成32位唯一的上传文件名 </span><span>*/</span><span>function</span><span> getUniName(){ </span><span>return</span><span>md5</span>(<span>uniqid</span>(<span>microtime</span>(<span>true</span>),<span>true</span><span>)); }</span>
느낌:
오래전에 PHP 파일 업로드를 접했는데 당시에는 엉망진창 같은 느낌이 들었습니다. 이제 $_FILES에 포함된 정보를 이해하고 작성한 지식을 사용하여 몇 가지 팁을 처리하면 시스템이 이를 논리적으로 고려하고 적시에 기능을 캡슐화한 다음 파일 업로드를 수행할 수 있는 것 같습니다. 빠르게. 이번에 보여드리는 코드는 전혀 요구사항을 충족하지 못할 것이므로 적절하게 수정하여 자신만의 코드가 될 수 있습니다. 예를 들어 업로드된 파일이 이미지인 경우 확장자만으로는 판단할 수 없으며, 이미지의 특성을 통해서도 확인이 필요합니다.
위 내용은 PHP 파일 업로드와 다중 파일 업로드에 대한 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











오픈 소스에 대해 자세히 알아보려면 다음을 방문하세요. 51CTO Hongmeng 개발자 커뮤니티 https://ost.51cto.com 실행 환경 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. 애플리케이션을 생성하려면 파일을 클릭합니다. >새파일->CreateProgect. 템플릿 선택: [OpenHarmony]EmptyAbility: 프로젝트 이름 shici, 애플리케이션 패키지 이름 com.nut.shici 및 애플리케이션 저장 위치 XXX(한자, 특수 문자, 공백 없음)를 입력합니다. CompileSDK10, 모델: 스테이지. 장치

파일 크기를 얻으려면 Java의 File.length() 함수를 사용하십시오. 파일 크기는 파일 작업을 처리할 때 매우 일반적인 요구 사항입니다. Java는 파일 크기를 얻는 매우 편리한 방법, 즉 길이( ) File 클래스의 메서드입니다. 이 기사에서는 이 방법을 사용하여 파일 크기를 가져오는 방법을 소개하고 해당 코드 예제를 제공합니다. 먼저, 크기를 구하려는 파일을 나타내는 File 객체를 만들어야 합니다. File 객체를 생성하는 방법은 다음과 같습니다: Filef

PHP Blob을 파일로 변환하는 방법: 1. PHP 샘플 파일을 생성합니다. 2. "function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })를 통해 } ” 메소드를 사용하여 Blob을 파일로 변환할 수 있습니다.

Java의 File.renameTo() 함수를 사용하여 파일 이름을 바꿉니다. Java 프로그래밍에서는 파일 이름을 바꿔야 하는 경우가 많습니다. Java는 파일 작업을 처리하기 위해 File 클래스를 제공하며 renameTo() 함수는 파일 이름을 쉽게 바꿀 수 있습니다. 이 기사에서는 Java의 File.renameTo() 함수를 사용하여 파일 이름을 바꾸는 방법을 소개하고 해당 코드 예제를 제공합니다. File.renameTo() 함수는 File 클래스의 메서드입니다.

Java의 File.getParentFile() 함수를 사용하여 파일의 상위 디렉터리를 가져옵니다. Java 프로그래밍에서는 파일과 폴더를 조작해야 하는 경우가 많습니다. 파일의 상위 디렉토리를 가져와야 할 경우 Java에서 제공하는 File.getParentFile() 함수를 사용할 수 있습니다. 이 문서에서는 이 함수를 사용하는 방법을 설명하고 코드 예제를 제공합니다. Java의 파일 클래스는 파일과 폴더를 조작하는 데 사용되는 주요 클래스입니다. 파일 속성을 얻고 조작하는 다양한 방법을 제공합니다.

Java의 File.getParent() 함수를 사용하여 파일의 상위 경로를 가져옵니다. Java 프로그래밍에서는 파일과 폴더를 조작해야 하는 경우가 많습니다. 때로는 파일이 있는 폴더의 경로인 파일의 상위 경로를 가져와야 하는 경우가 있습니다. Java의 File 클래스는 파일이나 폴더의 상위 경로를 가져오는 getParent() 메서드를 제공합니다. File 클래스는 파일 및 폴더에 대한 Java의 추상 표현입니다. 이는 파일 및 폴더를 작동하기 위한 일련의 메소드를 제공합니다. 그 중, 얻으세요.

Java에서 File.delete() 메소드를 사용하여 파일이나 디렉토리를 삭제하는 방법은 무엇입니까? 개요: Java에서는 File 클래스의 delete() 메서드를 사용하여 파일이나 디렉터리를 삭제할 수 있습니다. 이 메소드는 지정된 파일이나 디렉토리를 삭제하는 데 사용됩니다. 그러나 이 방법은 다른 프로그램에서 열지 않은 빈 디렉터리나 파일만 삭제할 수 있다는 점에 유의해야 합니다. 파일 또는 디렉터리 삭제에 실패하는 경우 IOException을 포착하여 구체적인 이유를 찾을 수 있습니다. 1단계: 관련 패키지 가져오기 먼저, 다음이 필요합니다.

Java 프로그래밍 언어에서는 파일 읽기, 쓰기, 복사, 삭제 등의 작업을 수행해야 하는 경우가 많습니다. Java는 파일 작업을 수행하기 위해 Files 클래스의 함수 세트를 제공합니다. 이 기사에서는 파일 작업을 위해 Java의 Files 함수를 사용하는 방법을 소개합니다. 필요한 패키지를 가져옵니다. 파일 작업을 수행하기 전에 먼저 Java의 io 패키지와 nio 패키지를 가져와야 합니다. importjava.io.File;importjava.io.IOException;import
