php檔案上傳之多文件上傳
在胡說八道之前,首先聲明,本文是建立在掌握php單文件上傳的基礎上,所以這裡就不贅述文件上傳伺服器配置,表單設定該注意的地方了。
話不多少,直入主題,在請求頁面方面有兩種寫法(只呈現表單部分,以上傳三個文件為例。)
<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>
兩個不同,發現僅僅是兩個不同的對比,發現只有兩個不同 ,第一個將name設定成陣列的形式,而第二個則是我們通常設定也很容易想到的一種方法。
雖然表面上顯示的僅有一點點不同,但真正提交到doAction.php頁面的$_FILES則有很大不同。
第一種的$_FILES是一個三維數組,而第二種是二維數組,如下:
顯然我們處理第二種格式的$_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檔案上傳之多檔案上傳,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。
🎜

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

php blob轉file的方法:1.建立一個php範例檔;2、透過「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })} 」方法實作Blob轉File即可。

使用Java的File.length()函數取得檔案的大小檔案大小是在處理檔案作業時很常見的一個需求,Java提供了一個很方便的方法來取得檔案的大小,即使用File類別的length()方法。本文將介紹如何使用此方法來取得檔案的大小,並給出對應的程式碼範例。首先,我們需要建立一個File物件來表示我們想要取得大小的檔案。以下是建立File物件的方法:Filef

想了解更多關於開源的內容,請造訪:51CTO鴻蒙開發者社群https://ost.51cto.com運行環境DAYU200:4.0.10.16SDK:4.0.10.15IDE:4.0.600一、建立應用程式點擊File- >newFile->CreateProgect。選擇模版:【OpenHarmony】EmptyAbility:填寫項目名,shici,應用包名com.nut.shici,應用儲存位置XXX(不要有中文,特殊字符,空格)。 CompileSDK10,Model:Stage。 Device

使用Java的File.renameTo()函數重命名檔案在Java程式設計中,我們經常需要對檔案進行重命名的操作。 Java提供了File類別來處理檔案操作,其中的renameTo()函數可以方便地重新命名檔案。本文將介紹如何使用Java的File.renameTo()函數來重新命名文件,並提供對應的程式碼範例。 File.renameTo()函數是File類別的一個方法,

使用java的File.getParent()函數取得檔案的父路徑在Java程式設計中,我們經常需要操作檔案和資料夾。有時候,我們需要取得一個檔案的父路徑,也就是該檔案所在資料夾的路徑。 Java的File類別提供了getParent()方法用來取得檔案或資料夾的父路徑。 File類別是Java對檔案和資料夾的抽象表示,它提供了一系列操作檔案和資料夾的方法。其中,get

使用java的File.getParentFile()函數取得檔案的父目錄在Java程式設計中,我們經常需要操作檔案和資料夾。當我們需要取得檔案的父目錄時,可以使用Java提供的File.getParentFile()函數來完成。本文將介紹如何使用這個函數並提供程式碼範例。 Java中的File類別是用於操作檔案和資料夾的主要類別。它提供了許多方法來取得和操作文件的屬性

如何使用Java中的File.delete()方法刪除檔案或目錄?概述:在Java中,我們可以使用File類別的delete()方法來刪除檔案或目錄。此方法用於刪除指定的檔案或目錄。但是要注意的是,該方法只能刪除空目錄或沒有被其他程式開啟的檔案。如果檔案或目錄刪除失敗,可以透過擷取IOException異常來找出特定原因。步驟一:導入相關的套件首先,我們需要

使用Java的File.mkdirs()函數建立多層目錄在Java中,我們經常需要建立資料夾來儲存和組織檔案。而有時候,我們需要建立多層目錄,也就是包含子資料夾的資料夾。 Java提供了File類別的mkdirs()函數來實作這個功能。 File類是Java中處理文件和目錄的類,它提供了一系列操作文件和目錄的方法。其中,mkdirs()函數是建立多層目錄的函數。下
