php簡單文件上傳$_files與move_uploaded_file實現文件上傳.
$_files["file"]["name"] - 被上傳文件的名稱
$_files["file"]["type"] - 被上傳文件的類型
$_files["file"]["size"] - 被上傳文件的大小,以字節計
$_files["file"]["tmp_name"] - 存儲在服務器的文件的臨時副本的名稱
$_files["file"]["error"] - 由文件上傳導致的錯誤代碼
這是一種非常簡單文件上傳方式,基于安全方面的考慮,您應當增加有關什么用戶有權上傳文件的限制.
注釋:對于 ie,識別 jpg 文件的類型必須是 pjpeg,對于 firefox,必須是 jpeg.
- /*
- *$formname html上傳表單名稱
- *$allowtype_array 允許上傳的文件類型數組
- *$allow_size 允許上傳的文件最大大小,默認是1mb
- *$isrename 是否需要重命名被上傳的文件
- */
- function upload_file($formname,$path,$allowtype_array,$allow_size='1048576',$isrename=true){
- if($_files[$formname]['tmp_name']=='' || $_files[$formname]['name']=='' || $_files[$formname]['size']==0){
- return false;
- }
- if(!file_exists('../uploadfiles/'.$path)){
- if(!mkdir('../uploadfiles/'.$path,0777)){
- writeerrmsg('創建上傳文件保存文件目錄失敗,請聯系管理員檢查目錄權限');
- }
- }
- if($_files[$formname]['size']>$allow_size){
- writeerrmsg('上傳文件過大,請將上傳文件限制在'.number_format($allow_size/1048576,'2','.','').'mb以內');
- }
- $file_name_array=explode('.',$_files[$formname]['name']);
- $file_type=strtolower($file_name_array[count($file_name_array)-1]);
- if(!in_array($file_type,$allowtype_array)){
- writeerrmsg('上傳文件類型錯誤,僅允許上傳后綴名為 .'.implode(' .',$allowtype_array).'的文件');
- }
- $save_name=$isrename?randomname().'.'.$file_type:$_files[$formname]['name'];
- if(!move_uploaded_file($_files[$formname]['tmp_name'],'../uploadfiles/'.$path.'/'.$save_name)){
- writeerrmsg('文件上傳過程中發生錯誤,請重新上傳');
- }
- switch($_files[$formname]['error']){
- case 0:
- return $save_name;
- break;
- case 1:
- writeerrmsg('上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值');
- break;
- case 2:
- writeerrmsg('上傳文件的大小超過了 html 表單中 max_file_size 選項指定的值');
- break;
- case 3:
- writeerrmsg('文件只有部分被上傳');
- break;
- case 4:
- writeerrmsg('沒有文件被上傳');
- break;
- default: //開源代碼Vevb.com
- writeerrmsg('能出現這條錯誤提示,日子也該混到頭了');
- break;
- }
- }
move_uploaded_file
本函數檢查并確保由 file 指定的文件是合法的上傳文件,即通過 php 的 http post 上傳機制所上傳的,如果文件合法,則將其移動為由 newloc 指定的文件.
如果 file 不是合法的上傳文件,不會出現任何操作,move_uploaded_file() 將返回 false.
如果 file 是合法的上傳文件,但出于某些原因無法移動,不會出現任何操作,move_uploaded_file() 將返回 false,此外還會發出一條警告.
這種檢查顯得格外重要,如果上傳的文件有可能會造成對用戶或本系統的其他用戶顯示其內容的話.
新聞熱點
疑難解答