PHP上傳原理及操作實現

2022-09-23 20:09:12 字數 2278 閱讀 9817

關於php上傳檔案的函式類庫,網上有許多封裝很完善,大家直接拿來用就可以。

本文章只是說下關於上傳原理和簡單的上傳操作,老鳥就無視了哈^_^~

還有一些安全性判斷比如:服務端限制能接收型別的檔案,而客戶端惡意將病毒檔案的字尾名改為配型的檔案上傳。

(舉例單檔案上傳,多檔案原理還是不變,只不過多了點小技巧)

index.html

upload files

1、form標籤enctype屬性

表單中enctype="multipart/form-data"是用於設定表單的mime編碼。

預設情況,這個編碼格式是application/x-www-form-urlencoded,不能用於檔案上傳;

只有使用了multipart/form-data且提交方式為post才能完整的傳遞檔案資料。

2、max_file_size 隱藏字段

max_file_size 隱藏字段(單位為位元組)必須放在檔案輸入字段之前,其值為接收檔案的最大尺寸。這是對瀏覽器的乙個建議,php 也會檢查此項。

在瀏覽器端可以簡單繞過此設定,因此不要指望用此特性來阻擋大檔案。(不過鑑於友好性最好還是在表單中加上此專案,因為它可以避免使用者在花時間等待上傳大檔案之後才發現檔案過大上傳失敗的麻煩。)

upload.php

<?php print_r($_files);

?>

我們可以看到:

array

( [file] => array

([name] => **檔案.jpg

[type] => image/jpeg

[tmp_name] => f:\wamp\tmp\php41bb.tmp

[error] => 0

[size] => 73886))

3、全域性變數 $_files的應用

$_files['file']['name']  為上傳檔案的原檔名

$_files['file']['type']  為上傳檔案的 mime 型別

$_files['file']['size']  已上傳檔案的大小,單位為位元組

$_files['file']['tmp_name']  檔案被上傳後在服務端儲存的臨時檔名()

$_files['file']['error']  檔案上傳的錯誤**

4、預設情況下,上傳檔案會儲存在服務端的臨時資料夾中,其目錄在php.ini中設定

php.ini與檔案上傳有關的一些常用設定:

file_uploads ;  是否允許通過http上傳檔案的開關。預設為on即是開

upload_tmp_dir ;  檔案上傳至伺服器上儲存臨時檔案的地方,如果沒指定就會用系統預設的臨時資料夾

upload_max_filesize;  即允許上傳檔案大小的最大值。預設為2m

post_max_size;  指通過表單post給php的所能接收的最大值,包括表單裡的所有值。預設為8m

下面是對單檔案上傳的完整**,因為是隨想隨寫的,可能邏輯巢狀的有點亂,懂原理最重要。

<?php //取得上傳檔案資訊

$filename=$_files['file']['name'];

$filetype=$_files['file']['type'];

$fileerror=$_files['file']['error'];

$filesize=$_files['file']['size'];

$tempname=$_files['file']['tmp_name'];//臨時檔名

//定義上傳檔案型別

$typelist = array("image/jpeg","image/jpg","image/png","image/gif"); //定義允許的型別

if(!is_uploaded_file($tempname))elseelse

}if($fileerror>0)

exit("檔案上傳失敗:".$fileerror);

}elseelseelse}}

}?>

5、關於php上傳檔案的一些常用函式:(具體用法就不貼出來了,自己看api文件吧 ^_^)

file_exists  檢查檔案或目錄是否存在

is_uploaded_file    判斷檔案是否是通過 http post 上傳的

move_uploaded_file    將上傳的檔案移動到新位置

is_writable   判斷給定的檔名是否可寫

iconv  字元編碼互轉

getimagesize  檢查是否為檔案(其他型別的檔案就算字尾名改了也能被檢測到)

PHP上傳原理及操作實現

關於php上傳檔案的函式類庫,網上有許多封裝很完善,大家直接拿來用就可以。本文章只是說下關於上傳原理和簡單的上傳操作,老鳥就無視了哈 舉例單檔案上傳,多檔案原理還是不變,只不過多了點小技巧 上傳檔案 input type file name file input type submit value ...

PHP檔案上傳的原理及實現

php檔案上傳的原理及實現 利用php的檔案函式來實現上傳 這段 分為兩個檔案,乙個為upload.html,乙個是upload.php 其中,請注意 這是乙個標籤,我們要實現檔案的上傳,必須指定為 multipart form data,否則伺服器將不知道要幹什麼。值得注意的是檔案upload.h...

PHP上傳原理及應用

1 form標籤enctype屬性 表單中enctype multipart form data 的意思,是設定表單的mime編碼。預設情況,只有使用了multipart form data,才能完整的傳遞檔案資料 input標籤 type 屬性中的 file 2 files 系統函式 files ...