本文實例分析了PHP檔案上傳操作。分享給大家供大家參考,具體如下:
文件上傳
發生在瀏覽器向伺服器發出的請求中。
文件,對於瀏覽器來講,就是表單中的一個特殊類型的資料而已。
瀏覽器表單中的數據,兩種類型:
字串類型(位元組流編碼)
文件類型(二進位編碼),文件是表單資料中一部分
伺服器角度:
在接受瀏覽器請求時,處理好表單內的資料。根據資料類型不同使用不同處理方法:
字串類型,儲存在$_POST變數中(記憶體)
檔案型數據,儲存在上傳臨時目錄中
表單提交時,瀏覽器會預設的行為:
表單內的內容都是字串類型,即使添加了文件域,需要在form上增加屬性,告知瀏覽器上傳的不隻字串類型資料。 enctype="multipart/form-data"
<body> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> </br> <input type="submit" value="submit"> </form> </body>
php伺服器在接收到文件類型的表單資料後,將文件儲存於臨時目錄(屬於臨時文件,腳本週期內有效)
; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir ;upload_tmp_dir =
將臨時文件持久化存儲
move_uploaded_file(src_url,goa_url)
$_FILES,儲存了上傳檔案的資訊包括臨時地址
錯誤類型:
0-1-2-3-4-6-7
0表示沒有錯誤
1表示檔案大於php的設定
; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 2M
2表示檔案大於表單設定max_file_size
<input type='hidden' name='MAX_FILE_SIZE' value='1024'>
3表示檔案上傳不完整
4表示沒有上傳檔案
5表示邏輯上傳了0位元組的檔案(空白檔案)
找到臨時上傳目錄(權限不足)
7表示檔案寫入失敗(磁碟空間、權限)
php允許的最大上傳檔案數量
; Maximum number of files that can be uploaded via a single request max_file_uploads = 20
post存在最大值限制
一旦超過,php就無法正常處理post與file值可能為空值
; Maximum size of POST data that PHP will accept. ; http://php.net/post-max-size post_max_size = 8M
類型檢測中
後綴名與mime都是瀏覽器提供的,需要php的擴展fileinfo完成對文件資訊的檢查(函數過程與面向對象)
;extension=php_fileinfo .dll
$finfo = new Finfo(FILEINFO_MIME_TYPE); $mine_type = $finfo->file($file['tmp_name']);
分子目錄儲存上傳檔案
原則:業務邏輯、檔案數量、時間
建立目錄mkdir()
檢查目錄is_dir()
<?php upload($_FILES['file']); function upload($file){ if($file['error']!=0){ return false; } //3M $max_size = 3145728; if($max_size<$file['size']){ return false; } //设置一个后缀名与mime的映射关系 $type_map = array( '.jpeg'=>array('image/jpeg','image/pjpeg'), '.jpg'=>array('image/jpeg','image/pjpeg'), '.png'=>array('image/png','image/x-png'), '.gif'=>array('image/gif') ); //后缀 $allow_ext_list = array('.jpeg','.png','.jpg'); $ext = strtolower(strrchr($file['name'],'.')); if(!in_array($ext,$allow_ext_list)){ echo '不支持该图片格式'; return false; } //MIME $allow_mime_list = array(); foreach($allow_ext_list as $val){ $allow_mime_list = array_merge($allow_mime_list,$type_map[$val]); } //浏览器提供信息坚持 $allow_mime_list = array_unique($allow_mime_list); if(!in_array($file['type'],$allow_mime_list)){ echo '不支持该图片格式'; return false; } //php自身检查 $file_mime = new Finfo(FILEINFO_MIME_TYPE); $mime = $file_mime->file($file['tmp_name']); if(!in_array($mime,$allow_mime_list)){ echo '不支持该图片格式'; return false; } //目录存储 $up_loadpath = './'; $sub_dir = date('Ymdh'); if(!is_dir($up_loadpath.$sub_dir)){ mkdir($up_loadpath.$sub_dir); } $prefix = 'bee_'; $name = uniqid($prefix,true).$ext; if(move_uploaded_file($file['tmp_name'],$up_loadpath.$sub_dir.$name)){ echo '上传成功'; return $name; }else{ echo '上传失败'; return false; } }
希望本文設計對大家PHP程式說明。
更多 PHP檔案上傳操作實例詳解相關文章請追蹤PHP中文網!

在PHP中,trait適用於需要方法復用但不適合使用繼承的情況。 1)trait允許在類中復用方法,避免多重繼承複雜性。 2)使用trait時需注意方法衝突,可通過insteadof和as關鍵字解決。 3)應避免過度使用trait,保持其單一職責,以優化性能和提高代碼可維護性。

依賴注入容器(DIC)是一種管理和提供對象依賴關係的工具,用於PHP項目中。 DIC的主要好處包括:1.解耦,使組件獨立,代碼易維護和測試;2.靈活性,易替換或修改依賴關係;3.可測試性,方便注入mock對象進行單元測試。

SplFixedArray在PHP中是一種固定大小的數組,適用於需要高性能和低內存使用量的場景。 1)它在創建時需指定大小,避免動態調整帶來的開銷。 2)基於C語言數組,直接操作內存,訪問速度快。 3)適合大規模數據處理和內存敏感環境,但需謹慎使用,因其大小固定。

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

JavaScript中處理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。 1.??返回第一個非null或非undefined的操作數。 2.??=將變量賦值為右操作數的值,但前提是該變量為null或undefined。這些操作符簡化了代碼邏輯,提高了可讀性和性能。

CSP重要因為它能防範XSS攻擊和限制資源加載,提升網站安全性。 1.CSP是HTTP響應頭的一部分,通過嚴格策略限制惡意行為。 2.基本用法是只允許從同源加載資源。 3.高級用法可設置更細粒度的策略,如允許特定域名加載腳本和样式。 4.使用Content-Security-Policy-Report-Only頭部可調試和優化CSP策略。

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

HTTPS是一種在HTTP基礎上增加安全層的協議,主要通過加密數據保護用戶隱私和數據安全。其工作原理包括TLS握手、證書驗證和加密通信。實現HTTPS時需注意證書管理、性能影響和混合內容問題。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中