php獲取文件的類型
① php通過finfo判斷excel文件是什麼格式
excel 93-2003後綴為 .xls 的 文件格式是 application/vnd.ms-excel
excel2007格式後綴是 .xlsx 的文件格式是application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
php上傳文件,可以通過內置的系統函數$_FILES 獲取文件的信息。
$_FILES數組內容如下: (其中upfile為獲取的表單名稱)
$_FILES['upfile']['name'] 客戶端文件的原名稱。
$_FILES['upfile']['type'] 文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如"image/gif"。
$_FILES['upfile']['size'] 已上傳文件的大小,單位為位元組。
$_FILES['upfile']['tmp_name'] 文件被上傳後在服務端儲存的臨時文件名
<?php
if(isset($_POST['sub'])){
echo"文件名:".$_FILES['upfile']['name']."<br>";
echo"文件類型:".$_FILES['upfile']['type'];
}
?>
<formenctype="multipart/form-data"method="post"action="f.php">
<inputtype="file"name="upfile"/>
<inputtype="submit"name="sub"value="上傳"/>
</form>
上傳 。xls文件 返回的信息為
文件名:導入收藏證書模板.xls
文件類型:application/vnd.ms-excel
② php 驗證上傳的文件類型為圖片,並獲得文件的後綴名
以下是我上傳了一個圖片後顯示的 $_FILES['filename']的信息
[filename] => Array
(
[name] => Winter.jpg
[type] => image/jpeg
[tmp_name] => /tmp/php2jw7QX
[error] => 0
[size] => 105542
)
其中type是文件類型的minitype 表示方法,例如普通的HTML的類型是text/html
如果你想用擴展名的方式判斷的話可以用以下代碼:
<?php
#允許的文件擴展名
$allowed_types = array('jpg', 'gif', 'png');
$filename = $_FILES['filename']['name'];
#正則表達式匹配出上傳文件的擴展名
preg_match('|\.(\w+)$|', $filename, $ext);
#print_r($ext);
#轉化成小寫
$ext = strtolower($ext[1]);
#判斷是否在被允許的擴展名里
if(!in_array($ext, $allowed_types)){
die('不被允許的文件類型');
}
?>
③ php讀取ini配置文件屬性
ini的內容格式如下,請根據自己的INI,格式修改下段程序.
autostart = false
font_size = 12
font_color = red
===================
function get_ini_file($file_name = "demo.ini"){
$str=file_get_contents($file_name);//讀取ini文件存到一個字元串中.
$ini_list = explode("\r\n",$str);//按換行拆開,放到數組中.
$ini_items = array();
foreach($ini_list as $item){
$one_item = explode("=",$item);
if(isset($one_item[0])&&isset($one_item[1])) $ini_items[trim($one_item[0])] = trim($one_item[1]); //存成key=>value的形式.
}
return $ini_items;
}
function get_ini_item($ini_items = null,$item_name = ''){//獲得INI條目的值.
if(empty($ini_items)) return "";
else return $ini_items[$item_name];
}
$ini_items = get_ini_file("demo.ini");
echo get_ini_item($ini_items,'font_size'); //輸出獲得的值.
④ 用php讀取txt內容
$file
=
"t.txt";//要讀的文本
$fp
=
@fopen($file,
'r');//以直讀(r)方式打開文件【注意,是r不是a,具體參考手冊fopen函數】
$content
=
@fread($fp,
filesize($file));//讀取全部(filesize($file))內容
fclose($fp);//關閉文件
$content
=
preg_replace('/[\n\r]/is',
'<br/>',
$content);//將換行符換成HTML標簽的換行
//你上例中的123456789會換成123<br/>456<br/>789
echo
$content;//輸出文件
⑤ PHP 沒有後綴名的文件怎麼獲取後綴
我給你思路吧
首先沒有後綴,那隻能通過文件頭來判斷了
functiongetFileType($file){
if(!empty($file)){
//打開文件
$filehead=fopen($file,'r');
//讀取文件2位元組
$bin=fread($filehead,2);
fclose($filehead);
//二進制字元串對數據進行解包
$data=unpack('C2chars',$bin);
$type_code=intval($data['chars1'].$data['chars2']);
switch($type_code){
case7790:
$fileType='exe';
break;
case7784:
$fileType='midi';
break;
case8075:
$fileType='zip';
break;
case8297:
$fileType='rar';
break;
case255216:
$fileType='jpg';
break;
case7173:
$fileType='gif';
break;
case6677:
$fileType='bmp';
break;
case13780:
$fileType='png';
break;
default:
$fileType='unknown';
break;
}
return$fileType;
}
-
⑥ php中怎麼判斷格式的文件類型
/**
*獲取文件類型
*@paramstring$filename文件名稱
*@returnstring文件類型
*/
functiongetFileType($filename){
returnsubstr($filename,strrpos($filename,'.')+1);
}
/**
*獲取文件類型2
*@paramstring$filename文件名稱
*@returnstring文件類型
*/
functiongetFileType2($filename){
returnstrtolower(pathinfo($filename)['extension']);
}
/**
*獲取文件類型3
*@paramstring$filename文件名稱
*@returnstring文件類型
*/
functiongetFileType3($filename){
return$exten[count($exten=explode('.',$filename))-1];
}
/**
*獲取文件類型4
*@paramstring$filename文件名稱
*@returnstring文件類型
*/
functiongetFileType4($filename){
$exten=explode('.',$filename);
returnend($exten);
}
⑦ php 怎樣讀取excel表格內容 - 技術問答
常用的用PHP讀取EXCEL的方法有以下三種,各自有各自的優缺點。個人推薦用第三種方法,因為它可以跨平台使用。
1. 以.csv格式讀取
將.xls轉換成.csv的文本格式,然後再用PHP分析這個文件,和PHP分析文本沒有什麼區別。
優點:跨平台,效率比較高、可以讀寫。
缺點:只能直接使用.csv的文件,如果經常接受.xls二進制文件的話需要手工轉換,不能自動化。一個文件只有一個SHEET。
PHP有自帶的分析.csv函數:fgetcsv
array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )
handle 一個由 fopen()、popen() 或 fsockopen() 產生的有效文件指針。
length (可選)必須大於 CVS 文件內最長的一行。在 PHP 5 中該參數是可選的。如果忽略(在 PHP 5.0.4 以後的版本中設為 0)該參數的話,那麼長度就沒有限制,不過可能會影響執行效率。
delimiter (可選)設置欄位分界符(只允許一個字元),默認值為逗號。
enclosure (可選)設置欄位環繞符(只允許一個字元),默認值為雙引號。該參數是在 PHP 4.3.0 中添加的。 和 fgets() 類似,只除了 fgetcsv() 解析讀入的行並找出 CSV 格式的欄位然後返回一個包含這些欄位的數組。
fgetcsv() 出錯時返回 FALSE,包括碰到文件結束時。
注意: CSV 文件中的空行將被返回為一個包含有單個 null 欄位的數組,不會被當成錯誤。
當然也可以自己手動分析字元串。
還可以利用fputcsv函數將行格式化為 CSV 並寫入文件指針。
2. ODBC鏈接數據源
優點:支持多種格式,cvs, xls等。支持讀寫,使用標准SQL語言,和SQLSERVER、MYSQL資料庫幾乎完全一樣。
缺點:值支持windows伺服器
3. PHP自定義類
優點:跨平台。某些類支持寫操作。支持.xls二進制文件
常用的類有phpExcelReader、PHPExcel。其中後者支持讀寫,但是需要php5.2以上版本。
phpExcelReader是專門用來讀取文件的。返回一個數組,包含表格的所有內容。
該 class 使用的方法可以參考網站下載回來的壓縮檔中的 example.php。
不過我下載回來的 (版本 2009-03-30),有兩點要注意:
reader.php 中的下面這行要修改
將 require_once 『Spreadsheet/Excel/Reader/OLERead.php』;
改為 require_once 『oleread.inc』;
example.php 中
修改 $data->setOutputEncoding(』CP1251′);
為 $data->setOutputEncoding(』CP936′);
example2.php 中
修改 nl2br(htmlentities($data->sheets[$sheet]['cells'][$row][$col]));
為 $table_output[$sheet] .= nl2br(htmlspecialchars($data->sheets[$sheet]['cells'][$row][$col]));
不然中文會有問題。
繁體的話可以修改為CP950、日文是CP932,具體可參考codepage說明。
修改 $data->read(』jxlrwtest.xls』) 為自己的 excel 文件名,zip 檔中附的 jxlrwtest.xls 應該是壞了。
⑧ php如何讀取某目錄下的所有同類型文件
PHP使用函數opendir、readdir、closedir來實現文件夾的操作,下面以一個最基本的例子來作為入門介紹:
<?php
//獲取某目錄下所有文件、目錄名(不包括子目錄下文件、目錄名)
$dir='C:/Users/';
$handler=opendir($dir);
while(($filename=readdir($handler))!==false){//務必使用!==,防止目錄下出現類似文件名「0」等情況
if($filename!="."&&$filename!=".."){
$files[]=$filename;
}
}
}
closedir($handler);
//列印所有文件名
foreach($filensas$value){
echo$value."<br/>";
}
?>
上面的代碼顯示c:users文件夾裡面的所有的文件和文件夾,忽略.和..兩個特殊含義的文件夾,程序把所有文件和文件夾名稱掃描保存到數組裡面,然後顯示。
如果你需要對文件進行過濾,例如只處理*.xls文件,可以在過濾.和..的地方添加代碼。例如:
if (substr($filename,-4)=='.xls'){
當你理解了上面的代碼之後,你就能編寫掃描子文件夾、以及子 文件夾裡面文件的方法了。基本思路是使用遞歸,下面我給出一個簡單的例子:
functionget_allfiles($path,&$files){
if(is_dir($path)){
$dp=dir($path);
while($file=$dp->read()){
if($file!="."&&$file!=".."){
get_allfiles($path."/".$file,$files);
}
}
$dp->close();
}
if(is_file($path)){
$files[]=$path;
}
}
functionget_filenamesbydir($dir){
$files=array();
get_allfiles($dir,$files);
return$files;
}
$filenames=get_filenamesbydir("c:/users/");
//列印所有文件名,包括路徑
foreach($filenamesas$value){
echo$value."<br/>";
}
這個例子使用dir類來編寫,實際上用opendir、readdir、closedir來寫也是相同的。