1、php檔案上傳配置
a、file_uploads=on/off; //確定伺服器
b、upload_tmp_dir=string;//設定檔案上傳之前必須存放在伺服器臨時乙個位置,知道檔案移動到最終目的地位置。
c、max_execution_time=integer; ///php指令碼在註冊乙個致命錯誤之前可以執行的最長時間,以s為單位;
d、memory_limit=integer; //設定指令碼可以分配的最大記憶體,以mb為單位,可防止是空的指令碼獨佔伺服器記憶體。
e、update_max_filesize=integer; //設定上傳檔案最大大小,此指令必須小於post_max_size。
f、post_max_size=integer; //確定通過post方法可以接受的資訊的最大大小,以mb為單位。
2、$_files陣列
案例——上傳表單(以上傳檔案為例)
步驟1:上傳表單的html檔案,見案例2-1:demo1.html
案例2-1(demo1.html):
解析:
上述**中,(1)enctype="multipart/form-data"為固定寫法,否則檔案上傳失敗。
(2)action="upload.php",定義這裡要處理上傳的程式檔案路徑
(3)method="post",定義的傳輸模式為post,一般情況下form表單提交資料都設定為post,
(4)這是乙個隱藏域,且定義了上傳檔案的大小上限,超過該值後,將會上傳失敗。
(它必須定義在上傳域之前,即「name="file"」),這裡定義的值不能超過php.ini檔案上的upload_max_filesize設定的值,否則將沒有意義可言。
(5)這是檔案上傳域type屬性必須設定為file,
但是name屬性可以自定義,這個值會在**中使用。
a.$files為超級全域性變數,
echo $files; //array陣列型別
它儲存各種與檔案上傳有關的資訊,資訊對於通過php指令碼上傳到伺服器的檔案至關重要。
(1)$_files["userfile"]["tmp_name"]——上傳檔案臨時存放位置
(2)$_files["userfile"]["name"]——上傳的檔名
(3)$_files["userfile"]["size"]——上傳檔案的大小
(4)$_files["userfile"]["type"]——變數中的值就是檔案的mime型別
(5)$_files["userfile"]["error"]——與檔案上傳有關的錯誤**
0:沒有錯誤
1:檔案size超出了約定值(upload_max_fileszie)
2:檔案size超出了表單指定值(max_file_size最大值)
3:只有部分上傳
4:沒有上傳任何檔案
b.上傳函式——
(1)is_uploaded_file()
作用:判斷檔案是否按照http post方式上傳
解析:由於檔案會上傳到臨時檔案中,即需要傳入引數$_files['userfile']['tmp_name']
(2)move_uploaded_file()
作用:移動上傳檔案
解析:由於
引數:該函式需要傳入兩個引數,乙個為臨時檔案的儲存位置,另乙個是要存放的位址
即($_files['userfile']['tmp_name'],$_files['userfile']['name'])
c.$_files幾個屬性在「上傳檔案」中的使用
(1)$_files['userfile']['type']的使用
if($_files['userfile']['type']!='image/jpeg')
(2)$_files['userfile']['error']使用
if($_files['userfile']['error']!=0)
注意:"!=0"時表示非法上傳。
(3)$_files['userfile']['tmp_name']:臨時檔案位址
$_files['userfile']['name']:目標檔案位址
注意:若沒有設定檔案的編碼格式,可能會出錯
編碼格式——
header('content-type:text/html;charset=gbk');
步驟2:上傳表單驗證是否正確的php檔案,見案例2-2:demo2.php
案例2-2——demo2.php
<?php
//form表單——上傳檔案
//新增編碼;
header('content-type:text/html;charset=gbk');
//print_r($_files);
//$_files為全域性變數;
//echo '
';
//1、判斷檔案是否按照http post上傳
//echo is_uploaded_file($_files["userfile"]["tmp_name"]);
//還有兩個問題要驗證,如果上傳錯誤,解決辦法
if($_files['userfile']['error']>0)
exit;
}//將所有的引數輸出
print_r($_files);
//第二種寫法:陣列array
//建立乙個常量;
defined('max_size',2000000);
//dirname
defined('url',dirname(__file__).'\uploads'); //儲存位址;
$filemimes=array('image/jpeg','image/pjpeg');
//判斷型別是否為陣列中的一種
if(is_array($filemimes))
}//第二個問題:只能允許jpg檔案
//用到$_files['userfile']['type']
//if($_files['userfile']['type']!='image/jpeg')
//第一種寫法:switch-case 解決ie與火狐的相容性問題;
//switch ($_files['userfile']['type'])
//判斷配置大小
if($_files['userfile']['size']>max_size)
//判斷目錄是否存在;
if(!is_dir(url))
if(is_uploaded_file($_files['userfile']['tmp_name']))
}else
//全部通過就是上傳成功
echo "";
?>
步驟3:上傳表單驗證通過的php檔案的位址顯示,見案例2-3:demo3.php
案例2-3——demo3.php
<?php
$url=$_get['url'];
echo '
?>
358 檔案上傳解析
檔案上傳解析 閱讀鴻洋大神部落格筆記 如果是瀏覽器上傳檔案,其實是把檔案資料轉換成2進製 然後按特定的格式傳送給伺服器 android也是乙個道理 先看看 然後再分析 public void uploadform mapparams,string fileformname,file uploadfi...
90 檔案上傳
1 檔案上傳 首先設定請求體 使用乙個nsmutabledata進行資料拼接 本次上傳標示字串 r ncontent disposition form data name 服務端字段 filename 上傳檔名 r ncontent type 上傳檔案mimetype r n r n要上傳的二進位制...
10 檔案上傳
引入 兩個包 上傳頁面表單如下 formaction control department list fileupload.action method post enctype multipart form data 檔案 inputtype file name image br inputtype...