Ⅰ php 怎麼下載沒有後綴的圖片
保存比較簡單,使用 file_get_contents 和 file_put_contents ,比較麻煩(應該是沒想到)的是如何獲取圖片類型,這個可以通過響應頭來判斷,響應頭有一個屬性 Content-Type ,它就是 mime ,做好 mime 和 文件擴展名的映射,就可以知道文件的擴展名了。下面這個函數可以做個參考:
/*
*保存圖片
*@param$url要保存的鏈接
*@return保存的位元組數,失敗則返回false
*/
functionsaveFile($url)
{
//mime和擴展名的映射
$mimes=array(
'image/bmp'=>'bmp',
'image/gif'=>'gif',
'image/jpeg'=>'jpg',
'image/png'=>'png',
);
//獲取響應頭
if(($headers=get_headers($url,1))!==false)
{
//獲取響應的類型
$type=$headers['Content-Type'];
//如果符合我們要的類型
if(isset($mimes[$type]))
{
$fileName=uniqid();
$ext=$mimes[$type];
$file="temp/$fileName.$ext";
//獲取數據並保存
$contents=file_get_contents($url);
returnfile_put_contents($file,$contents);
}
}
returnfalse;
}
Ⅱ php上傳圖片沒有文件名後綴
$filename = basename($_FILES['image']['name']);
$file_ext = strtolower(substr($filename, strrpos($filename, '.') + 1));
echo $file_ext;
請樓主先試試用這幾句看是否能獲取到後綴名
一般來說,即使系統沒有顯示後綴名,在php上傳中也是可以獲取到後綴名的
還有,就是要檢查一下,move_uploaded_file函數里,目標地址的圖片名稱是否拼接了後綴名
Ⅲ PHP略縮圖怎麼顯示出後綴求助,求助
把這行代碼改了就可以了。
$filePath = $uppath.md5($filename."image"). '.'. strtolower(fileext($_FILES['file']['name']));//轉為無圖片後綴的名稱,並加密
Ⅳ php截取文件擴展名
解決樓主的問題的方法就是,分開寫代碼,即:
$filearr
=
split(".",$filename);
$filetype
=
end($filearr);
split
函數用來分割字元串的時候,基本等同於函數
preg_grep,分割表達式可以是一個正則表達式,也可以是一個普通字元串,所以本身的執行效率很低,這一點你要記得……
所以,實現你現在的這個需求的話,最好用explode函數,使用普通字元作為分割表達式……
但是也的確如樓上所說,split
函數(PHP里)已經棄用,你可以使用
preg_match、preg_match_all
、preg_grep
等使用正則表達式作為分割的函數來替代。
就整個你的需求而言,你的思路還不很好,當一個文件名是【a.b.c.d.e.f.g.php】的時候,程序要浪費多餘的資源來分割其實你不用的a、b、c……,
所以要簡單滿足你取後綴名的需求的代碼應該是:
$filetype=substr(strrchr($filename,'.'),1);
此外還有:$path_info
=
pathinfo($filename);
$filetype
=
$path_info['extension'];
其實不是很推薦。
下面比較一下它們各自的執行效率:
設文件名是:aaa.bb.php、循環執行10000次;執行10次取平均值:
split
+
end
:0.067644s
explode
+
end
:0.016251s
pathinfo
+
['extension']
:0.018983s
strrchr
+
substr
:0.008611s
【以上文字現場版純手敲,2012-2-25
10:41,謝謝】
Ⅳ 如何用php獲取文件名後綴
php獲取文件後綴名(format file)
//方法一:
復制代碼 代碼如下:
<?php
function extend_1( $file_name )
{
$retval = 「」 ;
$pt = strrpos ( $file_name , 「.」 );
if ( $pt ) $retval = substr ( $file_name , $pt +1, strlen ( $file_name ) - $pt );
return ( $retval );
}
//方法二
復制代碼 代碼如下:
function extend_2( $file_name )
{
$extend = pathinfo ( $file_name );
$extend = strtolower ( $extend [ "extension" ]);
return $extend ;
}
//方法三
復制代碼 代碼如下:
function extend_3( $file_name )
{
$extend = explode ( 「.」 , $file_name );
$va = count ( $extend )-1;
return $extend [ $va ];
}
//方法四
復制代碼 代碼如下:
function getFileExt( $file_name )
{
while ( $dot = strpos ( $file_name , 「.」 ))
{
$file_name = substr ( $file_name , $dot +1);
}
return $file_name ;
}
?>
另外:
PHP pathinfo() 函數
PHP Filesystem 函數
定義和用法
pathinfo() 函數以數組的形式返迴文件路徑的信息。
語法
pathinfo(path,options)
參數
描述
path
必需。規定要檢查的路徑。
process_sections
可選。規定要返回的數組元素。默認是 all。
可能的值:
PATHINFO_DIRNAME – 只返回 dirname
PATHINFO_BASENAME – 只返回 basename
PATHINFO_EXTENSION – 只返回 extension
說明
pathinfo() 返回一個關聯數組包含有 path 的信息。
包括以下的數組元素:
[dirname]
[basename]
[extension]
提示和注釋
注釋:如果不是要求取得所有單元,則 pathinfo() 函數返回字元串。
例子
例子 1
復制代碼 代碼如下:
<?phpprint_r( pathinfo ( 「/testweb/test.txt」 ));?>
// 輸出:
// Array([dirname] => /testweb[basename] => test.txt[extension] => txt)
例子 2
復制代碼 代碼如下:
<?phpprint_r( pathinfo ( 「/testweb/test.txt」 ,PATHINFO_BASENAME));?>
// 輸出:
// test.txt
Ⅵ php怎麼獲取當前頁面的後綴文件名
<?php
$url = $_SERVER['PHP_SELF'];
$filename= substr( $url , strrpos($url , '/')+1 );
echo $filename;
?>
Ⅶ PHP上傳完圖片以後怎麼獲取它上傳到服務里邊的文件名及格式後綴
使用$_FILES[]超全局數組,獲取到上傳文件的詳細信息
Ⅷ 如何通過PHP獲取一下本地目錄下的所有圖片,並在網頁上分行頁的顯示出來,希望有類似代碼的分享下,謝謝
$dir = opendir('uploads');
//列出目錄中的文件
while (($file = readdir($dir)) !== false)
{
if(is_dir($file)==false)
{
$liebie = explode('.',$file);
if(count($liebie)>=2)
{
if ((strtolower($liebie[1])=='jpg')||(strtolower($liebie[1])=='gif'))
{
if ($num%3==0)
{
$list=$list.'</tr>';
}
$list=$list.'<td><img src="/uploads/'.$file.'" height="100" width="100"/><a href="/uploads/'.$file.'" onClick="ToClipboard(this.href)">復制<a></td>';
$num=$num+1;
}
}
}
}
closedir($dir);
$data['list']= "<table width='100%'><tr>".$list."</tr></table>";
Ⅸ 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 沒有後綴名的文件怎麼獲取後綴
我給你思路吧
首先沒有後綴,那隻能通過文件頭來判斷了
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;
}
-