图片头像ajax上传并显示缩略图的方法和示例
- 8773
- jQuery
- 8
- super_dodo
- 2014/10/30
项目开发中,需要上传用户头像或者店铺企业的Logo等操作。这些操作是网站的日常的行为。但是网上找了很多页没有合适的,虽然现在的这个也不是很满意,但是能满足上传显示灯基础功能。不过需要引入jquery等插件。
项目演示下载地址为 点击进入演示或者下载
直接上代码,前端部分ajax提交部分:
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>单张图片上传并显示缩略图</title> <script src="jquery-1.8.3.js" type="text/javascript"></script> <script src="jquery.easyui.min.js" type="text/javascript"></script> <style type="text/css"> html,body{font-family:'Microsoft Yahei';} h2,h3{text-align: center;} table{width:500px;margin:10px auto;border-collapse: collapse;} table tr{line-height: 50px;} input{width:300px;height: 30px;border-radius: 5px;} </style> </head> <body> <h2>单张图片上传并显示缩略图</h2> <h3><span style="color:red;">(图片大小不超过2m,格式为jpg,png,宽400高300为佳)</span></h3> <form action="" method="post" id="post_form"> <table class="post_table" id="post_table"> <tbody> <tr> <td width="100px">图片名称</td> <td width="400px"><input type="text" name="Form[name]" value="" class="form-control"></td> </tr> <tr> <td>图片展示</td> <td> <input type="text" name="Form[img_logo]" id="img_url" value="" readonly="readonly"> <a href="javascript:void(0)" onclick="img_select()">选择图片</a> <img id="img_preview" alt="" height="100px" src="" style="display:none;"> </td> </tr> <tr> <td rowspan="5">使用说明</td> <td rowspan="5"> 本方法主要使用ajax提交,需要用到jQuery Easy Ui里面的form的submit方法,所以在使用的时候需要引入jquery和jquery.easyui这两个js.<br> 你在实验的时候可能会存在跨域的问题,建议post提交的地址为该域下面的地址. </td> </tr> </tbody> </table> </form> <form id="img_form" method="post" name="img_form" enctype="multipart/form-data"> <input id="img_file" onchange="return img_upload()" name="file" type="file" style="display:none;"> </form> <script type="text/javascript"> //图片上传并显示的方法 function img_select(){ $('#img_file').click(); } //ajax异步提交 function img_upload(){ if(document.getElementById('img_file').value!=null){ $('#img_form').form('submit', { type: 'POST', url: "/comm/uploadImg", success: function(result){ $('#img_url').val(result); //图片上传后的地址 $('#img_preview').css('display','block'); //显示缩略图位置 $("#img_preview").attr("src",result); //预览图片方法jquery的方法 // document.getElementById('img_preview').src = result; //预览图片javascript的方法 // document.getElementById('img_url').value = result; //图片上传后的地址 } }); } } </script> </body> </html>
后端PHP的接口的方法如下,仅供参考(部分)
//上传图片时的ajax方法 public function actionUploadImg(){ $cate = Yii::app()->request->getParam('cate'); //传入分类 //step 1 使用$_FILES['file']["error"] 检查错误 if($_FILES["file"]["error"] > 0){ switch($_FILES["file"]["error"]) { case 1: echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值<br>"; break; case 2: echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值"; break; case 3: echo "文件只有部分被上传"; break; case 4: echo "没有文件被上传"; break; default: echo "末知错误"; } exit; } //step 2 使用$_FILES["file"]["size"] 限制大小 单位字节 2M=2000000 $maxsize=10000000; //10m大小 if($_FILES["file"]["size"] > $maxsize ) { echo "上传的文件太大,不能超过{$maxsize}字节"; exit; } //step 3 使用$_FILES["file"]["type"]或是文件的扩展名 限制类型 MIME image/gif image/png gif png jpg $allowtype=array("png", "gif", "jpg", "jpeg"); $arr=explode(".", $_FILES["file"]["name"]); $hz=strtolower($arr[count($arr)-1]); if(!in_array($hz, $allowtype)){ echo "这是不充许的类型"; exit; } //step 4 将让传后的文件名改名 $filepath = "upload/".date('Ymd'); if(!is_dir($filepath)) { mkdir($filepath, 0777); chomd($filepath,0777);} $randname = date("Y").date("m").date("d").date("H").date("i").date("s").rand(1000, 9999).".".$hz; //将临时位置的文件移动到指定的目录上即可 if(is_uploaded_file($_FILES["file"]["tmp_name"])){ if(move_uploaded_file($_FILES["file"]["tmp_name"], $filepath.'/'.$randname)){ echo '/'.$filepath.'/'.$randname; //上传成功的节奏 }else{ echo "上传失败"; } }else{ echo "不是一个上传文件"; } }
再次温馨提示,引入两个js,两个form表单不重合,在同一个域下,ajax的post地址根据你框架的url来定。
项目演示下载地址为 点击进入演示或者下载
有人说:一生中至少要有两次冲动,一次为奋不顾身的爱情一次为说走就走的旅行,说得好像都不要钱似的。
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例