導航:首頁 > 編程語言 > php獲取上傳文件的類型

php獲取上傳文件的類型

發布時間:2022-08-20 17:50:17

『壹』 JS動態創建的file控制項,php 怎麼獲取上傳的文件

首先,你的file控制項要放到form表單內,其次,每個file控制項的name屬性應該不同。下面是我修改後的:

<html>

</head>

<script language="javascript" type="text/ecmascript">

var x=1;

//======================

//功能:在表單中input file控制項

//參數:parentID---要插入input file控制項的父元素ID

// inputID----input file控制項的ID

//======================

function createInput(parentID,inputFileID){

var parent=$(parentID);//獲取父元素

var div=document.createElement("div");//創建一個div容器用於包含input file

x++;

var divName=inputFileID+x;//隨機div容器的名稱

div.id=divName;


var aElement=document.createElement("input"); //創建input

aElement.name=divName;

aElement.type="file";//設置類型為file


var delBtn=document.createElement("input");//再創建一個用於刪除input file的Button

delBtn.type="button";

delBtn.value="刪除";

delBtn.onclick=function(){ removeInput(parentID,divName)};//為button設置onclick方法


div.appendChild(aElement);//將input file加入div容器

div.appendChild(delBtn);//將刪除按鈕加入div容器

parent.appendChild(div);//將div容器加入父元素

}

//============================

//功能:刪除一個包含input file的div 容器

//參數:parentID---input file控制項的父元素ID

// DelDivID----個包含input file的div 容器ID

//============================

function removeInput(parentID,DelDivID){

var parent=$(parentID);

parent.removeChild($(DelDivID));

}

//通過元素ID獲取文檔中的元素

function $(v){return document.getElementById(v);}

</script>

<body>

<form action="test.php" method="post" enctype="multipart/form-data">

<div align="left" id="div_Pic" style="border:1px solid #CCCCCC">

<input name="PicFile" type="file" id="ShowPicFile">

</div>

<input type="button" onClick="createInput('div_Pic','PicFile')" name="button" id="button" value="+ 繼續添加圖片">

<input type="submit" value="提交">

</body>

</html>

然後php就可以通過遍歷$_FILES來獲得每個上傳的文件。下面的簡單例子只是列出每個文件的原文件名:

<?php

forEach($_FILES as $f){

echo $f["name"]."<br>";

}

?>

『貳』 php上傳類型的匹配問題

$file=$_FILES['filelist']; //獲取上傳文件
if(!empty($file)){

$extone=pathinfo($file['name'][0]); //第一個文件

//判斷第一個文件的擴展名是否正確
if( $extone['extension']!='txt' && $extone['extension']!='doc' ){
echo 'one格式不正確';
}else{
echo 'one格式正確';
}
$exttwo=pathinfo($file['name'][1]); //第二個文件
$extthree=pathinfo($file['name'][2]); //第三個文件
if( ($exttwo['extension']!='jpg' && $exttwo['extension']!='gif' ) || ($extthree['extension']!='jpg' && $extthree['extension']!='gif' ) ){
echo 'two and three 格式不正確';
}else{
echo 'two and three 格式正確';
}
}

『叄』 php獲取上傳文件擴展名$filename= md5(time().rand(0,9).$_FILES["filedata"]["name"]).".bmp";

$filename=md5(time().rand(0,9).$_FILES["filedata"]["name"]).'.'.pathinfo($_FILES["filedata"]["name"],PATHINFO_EXTENSION);

『肆』 PHP如何獲得上傳文件的具體信息

//上傳文件
if(!empty($_FILES['upload']['name']))
{//判斷上傳內容是否為空
$name = $_FILES['upload']['name'];
if($_FILES['upload']['error']>0){//判斷文件是否可以上傳到伺服器
echo "上傳錯誤";
}else{
if(!is_dir("../bbs/down")){//判斷指定目錄是否存在
@mkdir("../bbs/down");//創建目錄
}
$date=md5($userid);
$path='../bbs/down/'.$date.strstr($_FILES['upload']['name'],'.');//定義文件名稱和儲存位置
$type=$_FILES['upload']['name'];//獲取上傳文件名稱
$types=strtolower(strstr($type,'.'));//獲取上傳文件後綴
//可以判斷$types文件後綴類型是否符合照片類型的後綴
if(is_uploaded_file($_FILES['upload']['tmp_name'])){//是否是HTTP POST上傳
if(@!move_uploaded_file($_FILES['upload']['tmp_name'],$path)){//執行上傳
echo "上傳失敗<br/>";
}else{
echo "上傳成功<br/>";
}}}}

『伍』 PHP文件上傳類型限制

有兩種方式可以給你解決,也可以幾種方式同時使用

  1. 使用原本自帶的函數getimagesize來判斷是否是圖片

  2. 使用獲取上傳文件頭的方式來判斷

$filename='xxxx.gif';
$file=fopen($filename,'rb');
$bin=fread($file,2);//只讀取上傳文件的頭文信息的2個位元組
fclose($file);
$strInfo=@unpack('c2chars',$bin);
$typeCode=intval($strInfo['chars1'].$strInfo['chars2']);
$fileType='';
switch($typeCode){
case7790:
$fileType='exe';
break;
case7784:
$fileType='midi';
break;
case8297:
$fileType='rar';
break;
case255216:
$fileType='jpg';
break;
case7173:
$fileType='gif';
break;
case6677:
$fileType='bmp';
break;
case13780:
$fileType='png';
break;
default:
echo'unknown';
break;
}
echo'文件類型:'.$fileType.'文件頭信息:'.$typeCode;

希望對你有用!

『陸』 php 上傳文件

剛學php時寫的一個類,可以給你參考下,你所說的功能基本上也都有。

這個用作學習還是不錯的。


<?php
classfileup{
private$savefilepath;//保存路徑
private$filetype=array('gif','jpg','jpeg','png');//文件類型
private$maxsize=1000000;//上傳最大的尺寸默認值設置為1M
private$savename=true;//是否默認隨機名稱
private$upfileform;//上傳文件表單的name值
//以下是不可以修改的成員屬性
private$tmpname;//上傳的臨時文件名
private$upfilename;//上傳文件的名稱
private$uperror;
private$newname;//新的文件名
//private$upfiletype;//上傳文件的類型
private$upfilesize;//上傳文件的大小。
private$filehz;//文件名的擴展名。

//構造方法
function__construct($upfileform,$savefilepath='./upload/'){
$this->upfileform=$upfileform;
$this->savefilepath=rtrim($savefilepath,'/');
$this->tmpname=$_FILES[$upfileform]['tmp_name'];
$this->upfilename=$_FILES[$upfileform]['name'];
$this->upfilesize=$_FILES[$upfileform]['size'];
$this->uperror=$_FILES[$upfileform]['error'];
$this->getnewname();
}
//設置文件上傳的參數,不設置為默認值。
functionsetfilepar($par){
$pars=array('filetype','maxsize','savename');
foreach($paras$key=>$value){
if(in_array($key,$pars)){
$this->$key=$value;
}else{
continue;
}
}
}
//檢查上傳
privatefunctioncheckfileup(){
//判斷文件夾是否正確或文件夾是否有可寫入的許可權。
if(!is_dir($this->savefilepath)||!is_writable($this->savefilepath)){
$this->uperror=8;
returnfalse;
}
//判斷文件名是否存在
if(is_file($this->newname)){
$this->uperror=9;
returnfalse;
}
//判斷上傳文件的類型是否正確。
if(!in_array(strtolower($this->filehz),$this->filetype)){
$this->uperror=-1;
returnfalse;
}
returntrue;
}
//獲取新的文件名字
privatefunctiongetnewname(){
$tmp=explode('.',$this->upfilename);
$this->filehz=$tmp[count($tmp)-1];
if(is_bool($this->savename)){
if($this->savename){
$this->newname=$this->savefilepath.'/'.date('YmdHis').rand(10000,99999).'.'.$this->filehz;
}else{
$this->newname=$this->savefilepath.'/'.$this->upfilename;
}
}else{
$this->newname=$this->savefilepath.'/'.$this->savename.'.'.$this->filehz;
}
}

//獲取錯誤信息
privatefunctiongetuperror(){
switch($this->uperror){
case1:echo'上傳文件超過了系統指定的大小';break;
case2:echo'上傳文件超過了表單中指定的大小';break;
case3:echo'文件只有部分上傳';break;
case4:echo'沒有文件上傳';break;
case6:echo'找不到上傳的文件,系統錯誤';break;
case7:echo'文件寫入失敗';break;
case8:echo'文件路徑不存在,或不可寫';break;
case9:echo'文件名已經存在,請不要重復上傳';break;
case-1:echo'不是指定上傳的文件';break;
case-2:echo'請勿使用非法途徑上傳';break;
case-3:echo'文件上傳失敗';break;
default:'未知錯誤';break;

}
}


functionfileupload(){
if(!$this->checkfileup()||$this->uperror!=0){
$this->getuperror();
returnfalse;
}else{
if(!is_uploaded_file($_FILES[$this->upfileform]['tmp_name'])){
$this->uperror=-2;
$this->getuperror();
returnfalse;
}else{
if(move_uploaded_file($_FILES[$this->upfileform]['tmp_name'],$this->newname)){
returntrue;
}else{
$this->uperror=-3;
returnfalse;
}
}
}
}
//獲取文件名
functiongetname(){
return$this->newname;
}


}

『柒』 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 讀取上傳的文件急!

創建一個文件上傳表單

允許用戶從表單上傳文件是非常有用的。

請看下面這個供上傳文件的 HTML 表單:

<html>
<body>

<formaction="upload_file.php"method="post"
enctype="multipart/form-data">
<labelfor="file">Filename:</label>
<inputtype="file"name="file"id="file"/>
<br/>
<inputtype="submit"name="submit"value="Submit"/>
</form>

</body>
</html>

請留意如下有關此表單的信息:

<form> 標簽的 enctype 屬性規定了在提交表單時要使用哪種內容類型。在表單需要二進制數據時,比如文件內容,請使用 "multipart/form-data"。

<input> 標簽的 type="file" 屬性規定了應該把輸入作為文件來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。

注釋:允許用戶上傳文件是一個巨大的安全風險。請僅僅允許可信的用戶執行文件上傳操作。

創建上傳腳本

"upload_file.php" 文件含有供上傳文件的代碼:

<?php
if($_FILES["file"]["error"]>0)
{
echo"Error:".$_FILES["file"]["error"]."<br/>";
}
else
{
echo"Upload:".$_FILES["file"]["name"]."<br/>";
echo"Type:".$_FILES["file"]["type"]."<br/>";
echo"Size:".($_FILES["file"]["size"]/1024)."Kb<br/>";
echo"Storedin:".$_FILES["file"]["tmp_name"];
}
?>

通過使用 PHP 的全局數組 $_FILES,你可以從客戶計算機向遠程伺服器上傳文件。

第一個參數是表單的 input name,第二個下標可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣:

$_FILES["file"]["name"] - 被上傳文件的名稱

$_FILES["file"]["type"] - 被上傳文件的類型

$_FILES["file"]["size"] - 被上傳文件的大小,以位元組計

$_FILES["file"]["tmp_name"] - 存儲在伺服器的文件的臨時副本的名稱

$_FILES["file"]["error"] - 由文件上傳導致的錯誤代碼

『玖』 關於php實現文件上傳

php的文件上傳機制是把用戶上傳的文件保存在php.ini的upload_tmp_dir定義的臨時目錄(默認是系統的臨時目錄,如:/tmp)里的一個類似phpxXuoXG的隨機臨時文件,程序執行結束,該臨時文件也被刪除。PHP給上傳的文件定義了四個變數:(如form變數名是file,而且register_globals打開)

$file #就是保存到伺服器端的臨時文件(如/tmp/phpxXuoXG )

$file_size #上傳文件的大小

$file_name #上傳文件的原始名稱

$file_type #上傳文件的類型

推薦使用:

$_FILES['file']['tmp_name']

$_FILES['file']['size']

$_FILES['file']['name']

$_FILES['file']['type']

閱讀全文

與php獲取上傳文件的類型相關的資料

熱點內容
二板股票源碼 瀏覽:440
度人經pdf 瀏覽:898
怎麼配置android遠程伺服器地址 瀏覽:956
java程序員看哪些書 瀏覽:939
什麼app可以免費和外國人聊天 瀏覽:793
pdf手寫筆 瀏覽:180
別永遠傷在童年pdf 瀏覽:988
愛上北斗星男友在哪個app上看 瀏覽:419
主力散戶派發源碼 瀏覽:669
linux如何修復伺服器時間 瀏覽:59
榮縣優途網約車app叫什麼 瀏覽:477
百姓網app截圖是什麼意思 瀏覽:226
php如何嵌入html 瀏覽:815
解壓專家怎麼傳輸 瀏覽:745
如何共享伺服器的網路連接 瀏覽:134
程序員簡易表白代碼 瀏覽:168
什麼是無線加密狗 瀏覽:64
國家反詐中心app為什麼會彈出 瀏覽:69
cad壓縮圖列印 瀏覽:104
網頁打開速度與伺服器有什麼關系 瀏覽:865