14 檔案上傳(小案例及解析)

2021-07-25 05:06:20 字數 3565 閱讀 1386

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...