PHP單檔案上傳原理及上傳函式的封裝操作示例

2022-09-26 04:57:14 字數 2138 閱讀 2917

表單:0.php:

無標題文件

單檔案上傳函式的封裝:

00.php:

<?php //單檔案上傳函式的封裝

//檔案上傳原理:將客戶端的檔案上傳到伺服器端,再將伺服器端的臨時檔案移動到指定目錄即可。

//檔案的方向:客戶端——>伺服器(臨時檔案)——>指定目錄,當檔案進入伺服器時它就是臨時檔案了,這時操作中要用臨時檔案的名稱tmp_name。

//在客戶端設定上傳檔案的限制(檔案型別和大小)是不安全的,因為客戶能通過源**修改限制程式設計客棧,所以在服務端這裡設定限制。

//inhji設定編碼為utf-8,以避免中文亂碼

header('content-type:text/html;charset=utf-8');

//通過$_files接收上傳檔案的資訊

//檢測上傳檔案的型別

if (! in_array ( $ext, $allowext ))

//檢測上傳文的件大小是否符合規範

//$maxsize = 2097152;//2m

if($fileinfo['size']>$maxsize)

//檢測是否為真實的型別

//$flag=true;

if($flag)

}//檢測是否是通過http post方式上傳上來

if (! is_uploaded_file ( $fileinfo ['tmp_name'] ))

//$uploadpath='uploads';

//如果沒有這個資料夾,那麼就建立乙個

if(!file_exists($uploadpath))

//新檔名唯一

$uniname = md5 ( uniqid( microtime(true),true) ).'.'.$ext;

$destination = $uploadpath.'/'.$uniname;

//@符號是為了不讓客戶看到錯誤資訊

if(! @move_uploaded_file($fileinfo['tmp_name'], $destination ))

//echo '檔案上傳成功';

//return array(

// 'newname'=>$destination,

// 'size'=>$fileinfo['size'],

// 'type'=>$fileinfo['type']

//);

return $destination;

}?>

服務端操作上傳的檔案:

000.php

<?php header('cont程式設計客棧ent-type:text/html;charset=utf-8');

include_once '00.php';

$fileinfo=$_files['myfile'];

$allowext=array('jpeg','jpg','png','gif','html','txt');//修改允許上傳檔案的型別,為('jpeg','jpg','png','gif','html','txt'),也可以增加新的,如pdf,pptx等等

$newname=uploadfile($fileinfo,'imooc',false,$allowext);//修改上傳儲存的資料夾為本地的'imooc',如果沒有這個資料夾,那麼就建立乙個;//'false'引數:不要檢查上傳的檔案是否為真實的,因為要允許上傳除開型別外的其他型別檔案,如html、txt

echo $newname;

?>

最後,php的檔案上傳還有更智慧型的,功能更健全的  php單檔案、多個單檔案、多檔案上傳函式的封裝

php單檔案檔案上傳原理

目錄 用到的函式 實現乙個php檔案上傳的全部 explode separator,string,limit 表示用乙個字串分割另乙個字串,返回乙個陣列。第乙個引數表示風格的字元,第二個引數表示被分割的字串,第三個引數可選。file exists path 函式用來檢查檔案或者目錄是否存在,返回值為...

php檔案上傳之單檔案上傳

為了簡單一些,php檔案跟form表單寫在了乙個檔案裡.php單檔案上傳 1236 71213 1415 1617 18if empty files 45 exit msg error 46 47 filename fileinfo name 48 獲取檔案的副檔名 49 ext strtolowe...

php檔案單上傳和多上傳

1.php單檔案和多檔案上傳html部分 可以直接複製過去測試,直接可用 php file fileupload.class.php 檔案上傳類fileupload 本類的例項物件用於處理上傳檔案,可以上傳乙個檔案,也可同時處理多個檔案上傳 header content type text html...