高手教你PHP上傳多張圖片
學習PHP時,你可能會遇到PHP上傳多張圖片問題,這里將介紹PHP上傳多張圖片問題的解決方法,在這里拿出來和大家分享一下。單張的圖片上傳是不復雜的,這里涉及到PHP上傳多張圖片和對圖片格式的校驗,保證上傳的一定是圖片,防止上傳其他文件到服務器。
#T#基本實現算法是使用數組的形式,把所有的圖片提交個一個數組,對數組的元素進行一個個的處理。PHP其實不過是Web服務器的一個模塊功能,所以首先要保證Web服務器的安全。當然Web服務器要安全又必須是先保證系統安全,這樣就扯遠了,無窮無盡。PHP可以和各種Web服務器結合,這里也只討論Apache。非常建議以chroot方式安裝啟動Apache,這樣即使Apache和PHP及其腳本出現漏洞,受影響的也只有這個禁錮的系統,不會危害實際系統。以下為引用的內容:
- <?php
- //圖片目錄
- $img_dir="../upload/";
- //……html顯示上傳界面
- /*圖片上傳處理*/
- //把圖片傳到服務器
- //初始化變量
- $uploaded=0;
- $unuploaded=0;
- //只允許五張圖片上傳
- for($i=0;$i<=5;$i++)
- {
- //獲取當前圖片的信息
- $is_file=$_FILES['imgfile']['name'][$i];
- //如果當前圖片不為空
- if(!empty($is_file))
- {
- //把當前圖片的信息存儲到變量里
- $result[$i]="
- <trclasstrclass=td2align=center>
- <td>".$_FILES['imgfile']['name'][$i]."</td>
- <td>".round($_FILES['imgfile']['size'][$i]/1024,2)."K</td>
- <td>".$_FILES['imgfile']['type'][$i]."</td>
- <td>";
- //判斷上傳的圖片的類型是不是jpg,gif,png,bmp中的一種,同時判斷是否上傳成功
- if(
- $_FILES['imgfile']['type'][$i]=="image/pjpeg"||
- $_FILES['imgfile']['type'][$i]=="image/gif"||
- $_FILES['imgfile']['type'][$i]=="image/x-png"||
- $_FILES['imgfile']['type'][$i]=="image/bmp"
- )
- {
- //如果上傳的文件沒有在服務器上存在
- if(!file_exists($img_dir.$_FILES['imgfile']['name'][$i]))
- {
- //把圖片文件從臨時文件夾中轉移到我們指定上傳的目錄中
- move_uploaded_file($_FILES['imgfile']['tmp_name'][$i],
- $img_dir.$_FILES['imgfile']['name'][$i]);
- $result[$i].="成功";
- $uploaded++;
- }
- else//如果文件已經在服務器上存在
- {
- $result[$i].="<fontcolor=red>文件已存在</font>";
- $unuploaded++;
- continue;
- }
- }
- else
- {
- $result[$i].="<fontcolor=red>失敗</font>";
- $unuploaded++;
- }
- $result[$i].="</td></tr>";
- }//endif
- }//endfor
- //如果沒有選擇任何圖片
- if(empty($result))
- {
- prompt_msg("錯誤信息","沒有選擇任何圖片。","返回上一步","uploadimg.php?action=upload");
- exit();
- }
- //顯示所有上傳后的結果
- echo"<tablecellpaddingtablecellpadding=4cellspacing=1border=0class=tablewidth=400align=left>
- <trclasstrclass=navialign=center>
- <td>文件名</td>
- <td>大小</td>
- <td>類型</td>
- <td>上傳結果</td>
- </tr>
- ";
- foreach($resultas$value)
- {
- echo$value;
- }
- echo"<trclasstrclass=td1>
- <tdcolspantdcolspan=4>共上傳".($uploaded+$unuploaded).",成功:$uploaded,失敗:<fontcolorfontcolor=red>$unuploaded</font></td>
- </tr>
- <trclasstrclass=navi>
- <tdcolspantdcolspan=4align=center>[<ahrefahref='uploadimg.php?action=upload'title='繼續上傳'>繼續上傳</a>]
[<ahrefahref='image.php'title='瀏覽圖片'>瀏覽圖片</a>]</td>- </tr>
- </table>
- ";
- ?>