Ⅰ 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函数判断,下面分别讲解:
is_file()函数
is_file()函数 用来判断是否回为文件答,返回结果为true或者false
举例:
$ifile="c:/test";
$result=is_file($ifile);
echo $result;
输出:false
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里面的临时文件是否存在,存在就遍历,然后定义一个数组。把上传到服务器端的临时文件挪到指定位置,然后把路径存到数组里面,最终存到数据库。就实现上传了