基于jQuery图片上传预览插件(完美兼容版),效果图:
最近在做一个图片上传,找了很多插件兼容都不是很好!
最后不得不自己动手写一个图片上传插件,可以兼容各大浏览器!(IE、火狐、谷歌、360等等)
大插件大多都是需要swf文件支持,那么就意味着浏览器都装好adobe flash player。我们公司的电脑浏览器如果没装adobe flash player,也没提示要装(最后片上传就不能用)。那么导致只能放弃这类插件。
本插件由小川纯手编写,在这里分享给大家(由于是在工作中根据一个需求编写的插件,有很多不足之处)
【第一步】: 头部引入JS文件和jquery库文件
<script src="http://www.youhutong.com/static/js/jquery.js"></script> <script src="youhutong.uplode.js"></script>
【第二步】: JS引用插件图片上传方法
<script> $(function(){ $("#demo").youhutongUplode( { formId:'myform', //表单ID previewId:'preview', //图片预览容器ID filename:'filename', //file文件域的name值 height:'100px', //图片高 width:'auto' //图片宽 } , { key1:'val1', //传入服务器的值1:key+value key2:'val2', //传入服务器的值1:key+value key3:'val3' //传入服务器的值1:key+value } ); $("#demo1").youhutongUplode( { formId:'myform', previewId:'preview1', filename:'filename1', height:'100px', width:'auto' } ); }) </script>
【第三步】: PHP处理页面返回JSON格式数据,并调用回调方法!
调整方法如:
echo "<script>window.parent.youhutongSuccess('".json_encode($name)."');</script>";
1、上传成功需要返回2个参数:图片地址和图片名称。
2、上传失败需要返回1个参数:失败提示字符。
msg: 提示字符。
src: 图片地址(用于显示预览刚才上传的图片的)。
srcname:图片名称(后续提交表单用于入库的)。
【图片上传插件参数说明】:
$("上传按钮ID").youhutongUplode(参数对象1,参数对象2)
参数对象1:
可传参数列表(+默认值):有3个值是必须的(formId、previewId、filename)
formId : '',/*表单ID*/
previewId : '',/*图片容器*/
filename : '',/*文件域name值*/
name : 'www.youhutong.com',
width : '300px',/*图片宽*/
height : '300px',/*图片高*/
target : true,/*默认认为原form表单是不使用target的*/
size : 2,/*默认最大上传2MB*/
checkfile : true,/*是否检查图片格式,文件大小*/
type : ["gif", "jpeg", "jpg", "bmp", "png"]/*默认图片类型*/
参数对象2:
这个是传给服务器的数据,也是和参数对象1一样的设置方式。key和value都是自己定义。
【插件注意事项】:
1、引用插件图片上传方法传入的参数中:图片预览容器ID,不能是单标签
2、在PHP处理图片上传时:
1):记得接收file文件时,file文件域的name值通过$_POST或$_GET接收(看你表单本身的提交方式是那一种)如:
$file = $_FILES [$_POST['filekey']];
这里的filekey不要写成别的了哦,当然如果你一个表单只引用一次插件,那也可以直接写成:
$file = $_FILES ['filename']; // filename就是你传入的file文件域的name值
2):返回数据时调用方法:youhutongSuccess(json数据),当然你也可以自己定义一个,然后自己处理上传成功后的HTML操作。
下面是一个案例源码(一个表单有两个图片需要上传):
HTML部分:
<script src="http://www.youhutong.com/static/js/jquery.js"></script> <script src="youhutong.uplode.js"></script> <script> $(function(){ $("#demo").youhutongUplode( { formId:'myform', //表单ID previewId:'preview', //图片预览容器ID filename:'filename', //file文件野的name值 height:'100px', //图片高 width:'auto' //图片宽 } , { key1:'val1', //传入服务器的值1:key+value key2:'val2', //传入服务器的值1:key+value key3:'val3' //传入服务器的值1:key+value } ); $("#demo1").youhutongUplode( { formId:'myform', previewId:'preview1', filename:'filename1', height:'100px', width:'auto' } ); }) </script> <form action="a.php" enctype="multipart/form-data" method="post" id="myform"> <div id="main"> <div style="margin-top:50px;"> <div id="preview" style="float:left;"></div> <div style="float:left; margin-left:5px;"> <div class="btn" id="demo"></div> <span style="display:block; font-size:12px; color:green; overflow:hidden;"> 要求:45像素 x 45像素</span> </div> </div> <br/><br/> <div style="margin-top:50px; clear:both;"> <div id="preview1" style="float:left;"></div> <div style="float:left; margin-left:5px;"> <div class="btn" id="demo1"></div> <span style="display:block; font-size:12px; color:green; overflow:hidden;"> 要求:45像素 x 45像素</span> </div> </div> </div> </form>
PHP部分:
<?php header("Content-Type:text/html;charset=utf-8"); //第一:文件临时存放路径 $tmp_file = $_FILES [$_POST['filekey']] ['tmp_name']; //第二:以时间来命名上传的文件 $file_types = explode ( ".", $_FILES [$_POST['filekey']] ['name'] ); $file_type = $file_types [count ( $file_types ) - 1]; $name['filekey'] =$_POST['filekey']; if(!($file_type=='jpg' || $file_type=='png' || $file_type=='gif')){ $name['msg'] = "上传失败,图片格式不对"; }else{ $file_name = "GZ_TY_" . date ( 'Ymdhis' ). rand(6) . "." . $file_type; //第三:上传到的地方 $savePath ="uplode/"; //第四:执行上传 $size = $_FILES[$_POST['filekey']]['size']; if($size>(1024*1024)){ $name['msg'] = '上传失败,文件过大'; }else{ if(copy ( $tmp_file, $savePath . $file_name )){ $name['msg'] = "上传成功"; $name['src'] = $savePath . $file_name; $name['srcname'] = $savePath . $file_name; }else{ $name['msg'] = "上传失败"; } } } unset($_FILES); echo "<script>window.parent.youhutongSuccess('".json_encode($name)."');</script>"; ?>
如果您在用这款图片上传插件有什么问题,可以留言,我们会进一步改进、解决。
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/100.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意