導航:首頁 > 文件目錄 > php判斷文件是否是圖片

php判斷文件是否是圖片

發布時間:2023-01-24 11:52:47

Ⅰ php圖片上傳前預覽怎麼實現!!

1.先創建一個file表單域,我們需要用它來瀏覽本地文件
<form name="form1" id="form1" method="post" action="upload.php">
<input type="file" name="file1" id="file1" />
</form>
2.試下效果:
判斷文件類型:
當用戶選擇了一個圖片文件時,希望他能馬上看到這張圖片的縮略圖,以便他能確認沒有把自己的光屁股照片當作頭像傳到伺服器上^_^。
在預覽之前還得先判斷一下用戶選擇的是不是一個圖像文件,如果他想用一個.rar文件做頭像的話我們也需要禮貌地提醒一下。
<form name="form2" id="form2" method="post" action="upload.php">
<input type="file" name="file2" id="file2"
onchange="preview()" />
</form>
javascript函數實現,注意使用DOM方法getElementById來訪問對象。不要再使用form
和input的name屬性來訪問對象了,只有IE才這么干。<script type="text/javascript">
function preview2(){
var x = document.getElementById("file2");
if(!x || !x.value) return;
if(x.value.indexOf(".jpg")<0
&& x.value.indexOf(".jpeg")<0
&& x.value.indexOf(".gif")<0){
alert("您選擇的似乎不是圖像文件。");
}else{
alert("通過");
}
}
</script>
3.試下效果:

這里有一個問題,如果用戶選擇了名為「fake.jpg.txt」的文件,這段腳本仍舊會認為這是一個合法的圖像文件。一個可行的解決方案是先 把文件名轉換成小寫,再取文件路徑的最後4到5位,判斷一下文件的擴展名是否確為支持的圖像文件擴展名。不過這種方案略顯笨拙,也沒有什麼美感可言, 我們換一種方案:用「正則表達式」來判斷文件擴展名。
<script type="text/javascript">
function preview3(){
var x = document.getElementById("file3");
if(!x || !x.value) return;
var patn = /\.jpg$|\.jpeg$|\.gif$/i;
if(patn.test(x.value)){
alert("通過");
}else{
alert("您選擇的似乎不是圖像文件。");
}
}
</script>
4.看看效果(可以自己創建一個「fake.jpg.txt」文件試試):

回到這段腳本上來,即使你還看不懂正則表達式那兩行,但整段腳本的美感還是很明顯的:簡潔、直接、語義流暢,這與Web標准關於XHTML的要求是一致的,與Web設計師或開發者天生的「完美」主義也是一致的。
jjww一大段之後,轉入重點——預覽圖片
預覽功能的基本設計思路是很清晰的:創建一個img元素,再把文件域的value值賦值給img
元素的src屬性。<form name="form4" id="form4" method="post" action="#">
<input type="file" name="file4" id="file4"
onchange="preview4()" />
<img id="pic4" src="http://blog.163.com/lgh_2002/blog/" alt="圖片在此顯示" width="120"/>
</form>
<script type="text/javascript">
function preview4(){
var x = document.getElementById("file4");
var y = document.getElementById("pic4");
if(!x || !x.value || !y) return;
var patn = /\.jpg$|\.jpeg$|\.gif$/i;
if(patn.test(x.value)){
y.src = "file://localhost/" + x.value;
}else{
alert("您選擇的似乎不是圖像文件。");
}
}
</script>
5.試下效果:

如果用的是Firefox(或Opera),可能會發現什麼也沒有發生。是的,很不幸Firefox的安全策略不允許顯示一個用戶的本地 圖像文件。不知道為什麼要這么做,個人覺得圖像文件並不會造成嚴重的安全性問題。即使是不久前比較熱門的那個會引起Windows崩潰的jpeg文 件,要顯示它的前提條件是用戶自己選擇了這個文件或者你知道這個文件在用戶硬碟上的准確路徑。所以我想這種策略很可能來自於一個「懶惰」的開發人員,並 不想多寫一些程序來區分這個本地文件是一個圖像文件還是一個惡意文件,Firefox對安全性的要求讓他們有些過於敏感了。
讓Firefox顯示本地文件的唯一辦法就是修改它的默認安全策略:
在Firefox的地址欄中輸入「about:config」
繼續輸入「security.checkloari」
雙擊下面列出來的一行文字,把它的值由true改為false
然後你可以再試試上面預覽,everything works well!可惜的是並不能要求所有的用戶都去修改這個值(更不用說修改的過程還挺麻煩),所以毫無意義。我們能做的也許就是接受Firefox不能預覽本地圖片這種「可笑」的局面。
用DOM來創建對象
在上面的XHTML代碼中,為了預覽圖片,事先加入了一個沒有設置src的img對象。除去不美觀、代碼冗餘之外,如果用戶瀏覽器不支持 Javascript,不僅無法使用這個功能,還要接受頁面上一個永遠不會顯示出來的破圖。要解決這個問題,就需要在「運行時」再生成這個img對 象,途徑還是DOM。
<form name="form5" id="form5" method="post" action="#">
<input type="file" name="file5" id="file5"
onchange="preview5()"/>
</form>
<script type="text/javascript">
function preview5(){
var x = document.getElementById("file5");
if(!x || !x.value) return;
var patn = /\.jpg$|\.jpeg$|\.gif$/i;
if(patn.test(x.value)){
var y = document.getElementById("img5");
if(y){
y.src = 'file://localhost/' + x.value;
}else{
var img=document.createElement('img');
img.setAttribute('src','file://localhost/'+x.value);
img.setAttribute('width','120');
img.setAttribute('height','90');
img.setAttribute('id','img5');
document.getElementById('form5').appendChild(img);
}
}else{
alert("您選擇的似乎不是圖像文件。");
}
}
</script>
6.試下效果:

這樣就相對比較完美了。DOM和正則表達式一樣,都是「包你不悔」的實 用技術,如果你希望更多了解、深入學習、或者順利實踐Web標准,DOM是不可或缺的。從本人最近的體會來說,Javascript+DOM+CSS蘊 藏著強大的能量,就看怎麼釋放它了。

7.最後帖上JQUERY的上傳預覽代碼:

de><html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://blog.163.com/lgh_2002/blog/jquery.js"></script>
<script language="javascript">
$(function(){
var ei = $("#large");
ei.hide();
$("#img1").mousemove(function(e){
ei.css({top:e.pageY,left:e.pageX}).html('<img style="border:1px solid gray;" src="http://blog.163.com/lgh_2002/blog/' + this.src + '" />').show();
}).mouseout( function(){
ei.hide("slow");
})
$("#f1").change(function(){
$("#img1").attr("src","file:///"+$("#f1").val());
})
});
</script>
<style type="text/css">
#large{position:absolute;display:none;z-index:999;}
</style>
</head>
<body>
<form name="form1" id="form1">
<div id="demo">
<input id="f1" name="f1" type="file" />
<img id="img1" width="60" height="60">
</div>
<div id="large"></div>
</form>
</body>
</html>de>

Ⅱ php判斷本地文件是否存在

PHP文件編碼導致的問題.

<?php
$s='C:UsersAdministratorPictures狗.jpg';
var_mp(file_exists($s));

在 使用 ANSI 編碼的情況下. 上述代碼. 在Windows環境下執行成回功.

如果換答成 utf-8 編碼. 則會輸出 false .

改成以下代碼. 則在 utf-8 編碼下 運行正常

<?php
$s='C:UsersAdministratorPictures狗.jpg';
var_mp(file_exists(mb_convert_encoding($s,'gbk','utf-8')));

Ⅲ 火車頭採集器利用PHP 插件如何判斷是否是有圖新

1、我們先新建兩個標簽,裡面起始結束代碼不用填任何東西,只用於插件後面對其進行賦值操作,保存數據。
這兩個標簽名分別是:首圖,是否圖片新聞
2、復制PHP-demo.php文件,修改為 PHP-zhangthree01.php
以下為獲取第一張首圖和判斷是否圖片新聞的主要代碼,php文件見附件
function bodyfirstimg($body) {

$body = strtolower($body);

if ( preg_match("/<img.*src=[\"](.*?)[\"].*?>/", $body, $regs))

{ //使用正則獲取第一幅圖像地址

return $regs[1] ;

}

else

{

return '' ;

}

}
if($LabelArray['Html'])

{

$LabelArray['Html']='當前頁面的網址為:'.$LabelUrl."\r\n頁面類型為:".$LabelArray['PageType']."\r\nCookies數據為:$LabelCookie\r\n接收到的數據是:".$LabelArray['Html'];

}

else

{

$LabelArray['首圖'] = bodyfirstimg($LabelArray['內容']);

$LabelArray['是否圖片新聞'] = $LabelArray['首圖']==''?false:true;

}

該附件下載後解壓為PHP-zhangthree01.php放到程序下Plugins目錄
3、在插件配置那 考慮到采內容後還可能下載圖片,所以選擇在保存時選擇此插件使用即可
4、以新浪新聞規則作為測試。

Ⅳ thinkphp3.2.3使用Jpgraph在控制器中生成的圖片如何在前端調用

thinkphp3.2實現上傳圖片的控制器方法。分享給大家供大家參考,具體如下:
public function file()
{
$baseUrl = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME']));
import('ORG.Net.UploadFile');
import('ORG.Util.Services_JSON');
$upload = new UploadFile();
$upload->maxSize = 3145728;
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');
$upload->savePath = './uploads/Images/';
$info = $upload->uploadOne($_FILES['imgFile']);
$file_url = $baseUrl . 'uploads/Images/' . $info['0']['savename'];
if ($info) {
header('Content-type: text/html; charset=UTF-8');
$json = new Services_JSON();
echo $json->encode(array('error' => 0, 'url' => $file_url));
exit;
} else {
$this->error($upload->getErrorMsg());
}
}
public function file_manager()
{
import('ORG.Util.Services_JSON');
$php_path = dirname(__FILE__) . '/';
$php_url = dirname($_SERVER['PHP_SELF']) . '/';
$root_path = $php_path . './uploads/Images/';
$root_url = $php_url . './uploads/Images/';
$ext_arr = array('gif', 'jpg', 'jpeg', 'png', 'bmp');
$dir_name = emptyempty($_GET['dir']) ? '' : trim($_GET['dir']);
if (!in_array($dir_name, array('', 'image', 'flash', 'media', 'file'))) {
echo "Invalid Directory name.";
exit;
}
if ($dir_name !== '') {
$root_path .= $dir_name . "/";
$root_url .= $dir_name . "/";
if (!file_exists($root_path)) {
mkdir($root_path);
}
}
//根據path參數,設置各路徑和URL
if (emptyempty($_GET['path'])) {
$current_path = realpath($root_path) . '/';
$current_url = $root_url;
$current_dir_path = '';
$moveup_dir_path = '';
} else {
$current_path = realpath($root_path) . '/' . $_GET['path'];
$current_url = $root_url . $_GET['path'];
$current_dir_path = $_GET['path'];
$moveup_dir_path = preg_replace('/(.*?)[^\/]+\/$/', '$1', $current_dir_path);
}
echo realpath($root_path);
//排序形式,name or size or type
$order = emptyempty($_GET['order']) ? 'name' : strtolower($_GET['order']);
//不允許使用..移動到上一級目錄
if (preg_match('/\.\./', $current_path)) {
echo 'Access is not allowed.';
exit;
}
//最後一個字元不是/
if (!preg_match('/\/$/', $current_path)) {
echo 'Parameter is not valid.';
exit;
}
//目錄不存在或不是目錄
if (!file_exists($current_path) || !is_dir($current_path)) {
echo 'Directory does not exist.';
exit;
}
//遍歷目錄取得文件信息
$file_list = array();
if ($handle = opendir($current_path)) {
$i = 0;
while (false !== ($filename = readdir($handle))) {
if ($filename{0} == '.') continue;
$file = $current_path . $filename;
if (is_dir($file)) {
$file_list[$i]['is_dir'] = true; //是否文件夾
$file_list[$i]['has_file'] = (count(scandir($file)) > 2); //文件夾是否包含文件
$file_list[$i]['filesize'] = 0; //文件大小
$file_list[$i]['is_photo'] = false; //是否圖片
$file_list[$i]['filetype'] = ''; //文件類別,用擴展名判斷
} else {
$file_list[$i]['is_dir'] = false;
$file_list[$i]['has_file'] = false;
$file_list[$i]['filesize'] = filesize($file);
$file_list[$i]['dir_path'] = '';
$file_ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
$file_list[$i]['is_photo'] = in_array($file_ext, $ext_arr);
$file_list[$i]['filetype'] = $file_ext;
}
$file_list[$i]['filename'] = $filename; //文件名,包含擴展名
$file_list[$i]['datetime'] = date('Y-m-d H:i:s', filemtime($file)); //文件最後修改時間
$i++;
}
closedir($handle);
}
//排序
usort($file_list, 'cmp_func');
$result = array();
//相對於根目錄的上一級目錄
$result['moveup_dir_path'] = $moveup_dir_path;
//相對於根目錄的當前目錄
$result['current_dir_path'] = $current_dir_path;
//當前目錄的URL
$result['current_url'] = $current_url;
//文件數
$result['total_count'] = count($file_list);
//文件列表數組
$result['file_list'] = $file_list;
//輸出JSON字元串
header('Content-type: application/json; charset=UTF-8');
$json = new Services_JSON();
echo $json->encode($result);
}
ThinkPHP同一個項目里,兩個控制器的方法如何相互調用呢,ThinkPHP提供了一個A(),通過它可以使控制器之間的方法相互調用,使得代碼可以重復利用。
官方似乎對A()方法沒有相關使用文檔,現在通過一個例子來說一下如使用A()方法。
有兩個控制器,ColumnsAction和NewsAction。ncatlist()是ColumnsAction的分類列表方法,現在我要在控制器NewsAction中調用ncatlist()方法。
看代碼:
view sourceprint?
class ColumnsAction extends Action{
public function ncatlist(){
$Columns=new Model;
$News = M("News");
$list=$Columns->query("SELECT concat(colPath,'-',colId) AS bpath, colId,colPid,colPath, colTitle, description,ord FROM ".C('DB_PREFIX')."columns where typeid=1
ORDER BY bpath, colId");
$this->assign('alist',$list);
}
}
class NewsAction extends CommonAction {
// 首頁
public function index() {
$Columns=A("Columns");
$Columns->ncatlist();
}
這樣在模板中你就可以循環alist來獲取分類列表了。
說明:上面的代碼是WBlog3.0(使用thinkphp3.0的核心包)的代碼版斷,不過我查看了thinkphp3.1和thinkph3.12核心包還保留著A方法。

Ⅳ php讀取文件內容判斷是否存在這個內容

一般使用來curl獲取自,以前可以用file_get_contents獲取
<?php
$res = file_get_contents('url地址或文件'); // 得到結果
if ($res != 'not') {
// 彈窗需要使用js

echo "<script>alert('輸出信息');window.location='需要跳轉的地址';</script>";

}

Ⅵ 用php如何判斷一個是文件還是文件夾

php判斷文件還是文件夾主要通過is_file跟is_dir函數判斷,下面分別講解:

  1. is_file()函數

    is_file()函數 用來判斷是否回為文件答,返回結果為true或者false

    舉例:

    $ifile="c:/test";

    $result=is_file($ifile);

    echo $result;

    輸出:false

  2. is_dir()函數

    is_dir()函數用來判斷是否為目錄,返回結果為true或者false

    舉例:

    $ifile="c:/test";

    $result=is_file($ifile);

    echo $result;

    輸出:true

Ⅶ php 判斷圖片是否能打開

if($file_content=file_get_contents($image_path)){
//能打開
}else{
//不能打開
}

或者 參考 以下函數:

functionmy_file_exists($file)
{
if(preg_match('/^http:///',$file)){
//遠程文件
if(ini_get('allow_url_fopen')){
if(@fopen($file,'r'))returntrue;
}
else{
$parseurl=parse_url($file);
$host=$parseurl['host'];
$path=$parseurl['path'];
$fp=fsockopen($host,80,$errno,$errstr,10);
if(!$fp)returnfalse;
fputs($fp,"GET{$path}HTTP/1.1 host:{$host} ");
if(preg_match('/HTTP/1.1200/',fgets($fp,1024)))returntrue;
}
returnfalse;
}
returnfile_exists($file);
}

參考:http://blog.163.com/ydr_899/blog/static/38994332012103004226986/

Ⅷ php判斷一個文件的類型是否為圖片格式(jpg gif png格式)用in array格式做

$kuozhan=array('jpg','gif','png');
$flag = 1; // 判斷上傳文件是否格式正確,正確則為1 , 有一個格式錯誤則0
// 循環,檢測格式是否錯誤

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 " 上傳失敗,格式錯誤!";
$flag = 0; // 格式有錯,flag為0

break;

}
}
}
// 上傳文件
if ($flag == 1) {
循環上傳文件

}

Ⅸ php判斷文件是不是圖片

利用getimagesize函數:

functionisImage($filename){
$types='.gif|.jpeg|.png|.bmp';//定義檢查的圖片類型
if(file_exists($filename)){
$info=getimagesize($filename);
$ext=image_type_to_extension($info['2']);
returnstripos($types,$ext);
}else{
returnfalse;
}
}

if(isImage('test.jpg')!==false){
echo'是圖片';
}else{
echo'不是';
}

Ⅹ PHP 如何上傳圖片和文字

直接form表單加上上傳的屬性,在php那裡判斷下 $_FILE裡面的臨時文件是否存在,存在就遍歷,然後定義一個數組。把上傳到伺服器端的臨時文件挪到指定位置,然後把路徑存到數組裡面,最終存到資料庫。就實現上傳了

閱讀全文

與php判斷文件是否是圖片相關的資料

熱點內容
ps入門必備文件 瀏覽:348
以前的相親網站怎麼沒有了 瀏覽:15
蘋果6耳機聽歌有滋滋聲 瀏覽:768
怎麼徹底刪除linux文件 瀏覽:379
編程中字體的顏色是什麼意思 瀏覽:534
網站關鍵詞多少個字元 瀏覽:917
匯川am系列用什麼編程 瀏覽:41
筆記本win10我的電腦在哪裡打開攝像頭 瀏覽:827
醫院單位基本工資去哪個app查詢 瀏覽:18
css源碼應該用什麼文件 瀏覽:915
編程ts是什麼意思呢 瀏覽:509
c盤cad佔用空間的文件 瀏覽:89
不銹鋼大小頭模具如何編程 瀏覽:972
什麼格式的配置文件比較主流 瀏覽:984
增加目錄word 瀏覽:5
提取不相鄰兩列數據如何做圖表 瀏覽:45
r9s支持的網路制式 瀏覽:633
什麼是提交事務的編程 瀏覽:237
win10打字卡住 瀏覽:774
linux普通用戶關機 瀏覽:114

友情鏈接