當前位置:首頁 » 文件管理 » php判斷上傳文件

php判斷上傳文件

發布時間: 2022-07-25 15:52:56

1. php 怎麼判斷上傳文件的格式

#36;kuozhan=array('jpg','gif','doc');
foreach($val['tmp_name']as$key=>$us){
foreach($val['name']as$key=>$ns){
$arr=pathinfo($val['name'][$key]);
if(!in_array($arr['extension'],$kuozhan)){
echo"上傳失敗,格式錯誤!";
returnfalse;
}
}
foreach($val['tmp_name']as$key=>$us){
foreach($val['name']as$key=>$ns){
$arr=pathinfo($val['name'][$key]);
上傳程序
}}這樣就行,如果你對php有興趣的話,可以向我一樣在後盾人平台多看看自己學習學習,時間長了自己就慢慢明白了,希望能幫到你,給個採納吧謝謝
(*≧m≦*)

2. php怎麼判斷1個文件是否正確或者上傳成功

$fileType = 'png';break;default:echo 'unknown';}echo 'this is a(an) '.$fileType.' file:'.$typeCode;?>網路過來的,應該是判斷文件頭二樓:安裝fileinfo 擴展 使用finfo_file 函數 手冊上的例子 復制內容到剪貼板代碼:<?php $finfo = finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension

3. php檢測上傳文件大小的問題

在用PHP進行文件上傳的操作中,需要知道怎麼控制上傳文件大小的設置,而文件可傳大小是受到多種因素制約的,現總結如下:
1、php.ini:upload_max_filesize 所上傳的文件的最大大小。默認值2M。

2、php.ini:memory_limit 本指令設定了一個腳本所能夠申請到的最大內存位元組數,默認值8M。如果不需要任何內存上的限制,必須將其設為 -1。如果內存不夠,則可能出現錯誤:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

3、php.ini:post_max_size 設定POST數據所允許的最大大小。此設定也影響到文件上傳。要上傳大文件,該值必須大於 upload_max_filesize。

4、php.ini:max_execution_time = 30 ; Maximum execution time of each script, in seconds

5、php.ini:max_input_time = 60 ; Maximum amount of time each script may spend parsing request data

6、如果用到mysql的BLOB進行二進制文件存儲,則需要設置my.ini:max_allowed_packet=xxM

7、httpd.conf
在 Apache 裡面有一個選項是 LimitRequestBody,這個選項可以限制用戶送出的 HTTP 請求內容。這個選項可以在 .htaccess 或 httpd.conf 里使用,而如果在 httpd.conf 內使用,分別可以用在 virtualhost 或目錄屬性設定。而 LimitRequestBody 的設定值是介乎 0 (無限制) 至 2147483647 (2GB)。
例如要在目錄 D:/AppServ/www 設定上傳限制為 100K,可以在 .htaccess 或 httpd.conf 加入以下語句:

LimitRequestBody 1024000000
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all

LimitRequestBody 1024000000Options Indexes FollowSymLinks MultiViews ExecCGIAllowOverride AllOrder allow,denyAllow from all

如果透過 .htaccess 設定,儲存檔案後會立即生效;如透過 httpd.conf 設定,須要重新啟動 Apache。
PHP關於文件上傳部分,特別提到表單隱藏域:MAX_FILE_SIZE,意思是接收文件的最大尺寸。文檔中給出的例子如下:

<form enctype="multipart/form-data" action="_URL_" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
form>

Send this file:

這里設置MAX_FILE_SIZE = 30000,期待一種可能,使得瀏覽器在傳送文件之前能夠依此作出預先判斷,如果文件尺寸大於30000位元組,則不執行實際的POST動作。也就是不往伺服器發送文件內容,而是直接在客戶端提醒用戶「你試圖上傳的文件超過30000位元組」。
這的確是一個非常棒的主張,但在現實中卻暫時無法實現。不是因為這個限制可以「被簡單地繞過」,而是IE和FireFox這兩個主流瀏覽器都不支持這個特性。PHP的這個建議尚未被採納。

MAX_FILE_SIZE還有一個用場:後台PHP會判斷接收到的文件大小是否大於這個值,如果超出,$_FILES['thisfile']['error']會被設置為UPLOAD_ERR_FORM_SIZE(2),同時放棄保存臨時文件,將$_FILES['thisfile']['size']置0。
這個例子,沒問題,表現正常,當我試圖上傳一個40多K的文件時,PHP程序報告「文件超過MAX_FILE_SIZE」。
但是,如果我們將表單中的MAX_FILE_SIZE從30000減少到1000,情形又如何呢?

上傳800位元組的文件,正常;
上傳40K的文件,PHP報告文件過大,也正常;
上傳3000個位元組的文件,PHP未報告錯誤,它成功保存了文件!出乎意料!

問題就出在main/rfc1867.c中判斷文件是否超長的這部分代碼上。php每次從buffer中讀取FILLUNIT位元組長度的內容後,首先判斷「已經讀到的內容長度(total_bytes)」是否大於MAX_FILE_SIZE,然後再增加「已經讀到的內容長度(total_bytes)」。這樣一來,和預計的結果之間至多會有FILLUNIT位元組的誤差,而FILLUNIT=1024*5=5K。(點擊bug了解詳細內容)
這就是說,當MAX_FILE_SIZE<5K時,上傳一個大於MAX_FILE_SIZE,但是小於5K的文件是沒有問題的。
當然,因為這個設置很容易被繞過,所以伺服器端編程不應當依賴於MAX_FILE_SIZE。而且,5K到底是個很小的數值,對大多數上傳文件的表單來說沒有影響。
PHP中post_max_size,upload_max_filesize, MAX_FILE_SIZE的設置,和客戶端上傳給伺服器端的流量大小無關。
Apache伺服器從客戶端接收長度不超過LimitRequestBody位元組數的請求,然後傳送給php模塊,php模塊再決定是否保存成臨時文件,設置$_FILES全局變數,移交給script進一步處理。
這個Apache的LimitRequestBody選項預設值=0,允許Request body的最大位元組數是2G(Linux + Apache)
最後還要注意的是:
html本身能夠post數據也是有限制的,不能超過2G。
ftp客戶端有文件偏移指針的2GB邊界限制,未使用特殊編譯flag編譯的ftp伺服器端或者客戶端,無論在什麼FS中都不支持大於2GB的文件。不知道PHP會不會也有這種情況。

4. php 判斷是否有文件上傳

使用系統變數:$_FILES[]
$_FILES

經由 HTTP POST 文件上傳而提交至腳本的變數。類似於舊數組 $HTTP_POST_FILES
數組(依然有效,但反對使用)。詳細信息請參閱 POST 方法上傳。

5. php判斷上傳文件類型,是取原名後輟好,還是用$_FILES['inputname']['type']好

首先判斷$_FILES['inputname']['type'],對於能夠識別的類型更正文件後綴,然後再判斷後綴。

因為$_FILES['inputname']['type']只能識別少數類型,但是它是根據文件內容來識別的,特別是對於許多把BMP圖形保存為JPG文件的相機,一下就現原型了,而你的程序可能針對BMP有轉換為JPG的處理。

6. thinkphp 如何判斷是否有上傳文件,如果沒有上傳文件,那麼就不上傳,只保存其它信息,著急!謝謝!

在上傳之前添加
這是單個的文件上傳
<input type="file" name="images" id="images" />
if($_FILES['images']['name']){ //images 是你上傳的名稱

}
多個的上傳判斷
<input type="file" name="images[]" id="images" />
if($_FILES['images']['name']){ //images[] 是你上傳的名稱 判斷上傳的是否為空

}
如果你還不知道的話可以使用
print_r($_FILES); 這個是顯示所有上傳的相關信息
希望對你有幫助!

7. PHP判斷上傳文件是不是webp

讀取文件前幾個位元組 判斷文件類型就好了

8. php如何判斷上傳多個文件的類型及大小等信息

<?php
if (isset($_FILES['upload']['name']))
{
$fcount = count($_FILES['upload']['name']);

for ($i = 0; $i < $fcount; $i++)
{
$fname = $_FILES['upload']['name'][$i];
$path_parts = pathinfo($fname);
if (strtolower($path_parts['extension']) != 'ppt')
{
echo $_FILES['upload']['name'][$i] . ' 不是ppt文件. <br />' ;
}
}
for ($i = 0; $i < $fcount; $i++)
{
$fsize = (int)$_FILES['uplode']['size'][$i];
if ($fsize > 2048576)
{
echo '文件超過指定的大小: ' . $_FILES['upload']['name'][$i] . ":" . $fsize . '<br />';
}
}
for ($i = 0; $i < $fcount; $i++)
{
$ferror = $_FILES['uplode']['error'][$i];
if ($ferror)
{
echo '文件上傳錯誤: ' . $_FILES['upload']['name'][$i] . ":" . $ferror. '<br />';
}
}
} else
{
echo '上傳文件不正確.';
}

?>

9. 如何用php判斷上傳的是否為圖片阿

PHP 圖片上傳,如果不做任何判斷的話,隨便一個文件如 rar,zip,php,java等文件改個文件名,改個後綴就能以圖片形式上傳的伺服器,往往會造成極大的危害!
工具/原料
PHP
apache / nginx / iis
phpstorm / netbeans / notepad++ / editplus
方法/步驟
第一種方法:如果是只是單純判斷是否是圖片格式的話,我使用 getimagesize 方法function checkIsImage($filename){ $alltypes = '.gif|.jpeg|.png|.bmp';//定義檢查的圖片類型 if(file_exists($filename)){ $result= getimagesize($filename); $ext = image_type_to_extension($result']); return stripos($alltypes,$ext); }else{ return false; }}
第二種方法比較強大一些,能判斷多種格式function getReailFileType($filename){ $file = fopen($filename, "rb"); $bin = fread($file, 2); //只讀2位元組 fclose($file); $strInfo = @unpack("C2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; switch($typeCode){ case 7790: $fileType = 'exe';break; case 7784: $fileType = 'midi'; break; case 8297: $fileType = 'rar'; break; case 255216: $fileType = 'jpg';break; case 7173: $fileType = 'gif';break; case 6677: $fileType = 'bmp';break; case 13780: $fileType = 'png';break; default: $fileType = 'unknown'; } return $fileType;}
第三種方法:
PHP gd類庫函數提供了一個exif_imagetype() 函數, 用來讀取圖像的第1個位元組, 還會對圖片的簽名做檢查。 如果格式不對,會返回false。 其實啊, 這個方法和第一種方法有異曲同工之妙。 但是因為這個是庫函數,效率要比第一種方法高得多。

此函數用法很簡單,傳入路徑,然後通過判斷是否等於某個常量, 例如 gif格式的IMAGETYPE_GIF
第四種方法:php重繪
效率很低的一種方法,但也是一種思路: 把傳輸過來的文件,不論什麼文件都以resource 類型繪到圖片中去, 如果是圖片,能還原出來。如果不是圖片,那繪畫不出來,而且裡面的危險代碼也沒有了。
具體請看:

總結: 我曾經在網上看到過有人說:相信懂得php的人都用過XX函數。 我打開一看,就是一個使用後綴來判斷上傳類型的函數。 同學在做類似功能的時候一定要揭開表現看到本質,否則經過偽裝的圖片在上傳之後,會對伺服器造成極大安全隱患。

10. php中關於判斷上傳文件格式

那隻有把這段代碼寫兩次,第一次判斷是否合法(不要else),第二次執行上傳(不要if),例如:

$kuozhan=array('jpg','gif','doc');
foreach($val['tmp_name']as$key=>$us){
foreach($val['name']as$key=>$ns){
$arr=pathinfo($val['name'][$key]);
if(!in_array($arr['extension'],$kuozhan)){
echo"上傳失敗,格式錯誤!";
returnfalse;
}
}
foreach($val['tmp_name']as$key=>$us){
foreach($val['name']as$key=>$ns){
$arr=pathinfo($val['name'][$key]);
上傳程序
}}
熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:513
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:18
linux485 發布:2025-07-05 14:38:28 瀏覽:298
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:747
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:421
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:675
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:229
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:673
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:274
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:824