600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例【PHP】

PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例【PHP】

时间:2018-08-25 02:38:59

相关推荐

PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例【PHP】

后端开发|php教程

jquery,ajaxFileUpload,异步上传

后端开发-php教程

平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了。后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果。网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理。

宽带计费源码,安装ubuntu重启保存,爬虫架构教学视频,php网卡,seo生态链接lzw

A、详解ajaxFileUpload插件的语法参数

红包扫雷源码开发,ubuntu 无蓝牙驱动,tomcat6欢迎界面空白,bp的爬虫,哪个php视频网站好,孟津seo公司lzw

原理:ajaxfileupload是通过监听iframe的onload方法来实现, 当从服务端处理完成后,就触发iframe的onload事件调用其绑定的方法,在绑定的方法中获取iframe中服务器返回的数据体(支持的普通文本,json,xml,script, html)

ftp文件下载源码,vscode设置bash,ubuntu系统日志用户操作,如何证明tomcat,sqlite 如果表存在,微动力留言板插件下载,web前端框架怎么学习,java爬虫用户信息,php字符位置,尹高洁seo培训,投资网站源码php,透明按钮 网页 代码,wordpress模板资源,织梦下载页面怎么调用标签,社区资源管理系统源码,智能程序源码下载lzw

语法:$.ajaxFileUpload([options])

B、接下来我们看看如何去使用

1、先引入ajaxFileUpload这个插件。

这里我用的是jq1.11.1版本,网上有说jq版本与ajaxfileupload的版本要对应才不会有异常报错,反正我现在这个没错误。

2、贴上HTML的代码。

说明:请上传手持证件的半身照,请确保照片内证件信息清晰可读。

此处主要的是这一句代码,其他的不用管,因为这里我是在手机端,用的是jqueryMobile插件。

3、到js代码进行处理。

$(document).bind(pageinit, function(){ //照片异步上传 $(#id_photos).change(function(){ //此处用了change事件,当选择好图片打开,关闭窗口时触发此事件 $.ajaxFileUpload({ url:/uploader/, //处理图片的脚本路径 type: post, //提交的方式 secureuri :false, //是否启用安全提交 fileElementId :id_photos, //file控件ID dataType : json, //服务器返回的数据类型 success : function (data, status){ //提交成功后自动执行的处理函数 if(1 != data.total) return; //因为此处指允许上传单张图片,所以数量如果不是1,那就是有错误了 var url = data.files[0].path; $(.id_photos).empty(); //此处效果是:当成功上传后会返回一个json数据,里面有url,取出url赋给img标签,然后追加到.id_photos类里显示出图片 $(.id_photos).append(

异步上传成功后HTML页面效果是这样子的:

4、看看PHP是如何处理的

class UploaderController extends XXXX_Controller { public function index() { $files = array(); $success = 0; //用户统计有多少张图片上传成功了 foreach ($_FILES as $item) { $index = count($files); $files[$index][srcName] = $item[ ame]; //上传图片的原名字 $files[$index][error] = $item[error]; //和该文件上传相关的错误代码 $files[$index][size] = $item[size]; //已上传文件的大小,单位为字节 $files[$index][ ype] = $item[ ype]; //文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif" $files[$index][success] = false; //这个用于标志该图片是否上传成功 $files[$index][path] = \; //存图片路径 // 接收过程有没有错误 if($item[error] != 0) continue; //判断图片能不能上传 if(!is_uploaded_file($item[ mp_name])) { $files[$index][error] = 8000; continue; } //扩展名 $extension = \; if(strcmp($item[ ype], image/jpeg) == 0) { $extension = .jpg; } else if(strcmp($item[ ype], image/png) == 0) { $extension = .jpg; } else if(strcmp($item[ ype], image/gif) == 0) { $extension = .jpg; } else { //如果type不是以上三者,我们就从图片原名称里面去截取判断去取得(处于严谨性)$substr = strrchr($item[ ame], .); if(FALSE == $substr) {$files[$index][error] = 8002;continue; } //取得元名字的扩展名后,再通过扩展名去给type赋上对应的值 if(strcasecmp($substr, .jpg) == 0 || strcasecmp($substr, .jpeg) == 0 || strcasecmp($substr, .jfif) == 0 || strcasecmp($substr, .jpe) == 0 ) {$files[$index][ ype] = image/jpeg; } else if(strcasecmp($substr, .jpg) == 0) {$files[$index][ ype] = image/png; } else if(strcasecmp($substr, .jpg) == 0) {$files[$index][ ype] = image/gif; } else {$files[$index][error] = 8003;continue; } $extension = $substr; } //对临时文件名加密,用于后面生成复杂的新文件名 $md5 = md5_file($item[ mp_name]); //取得图片的大小 $imageInfo = getimagesize($item[ mp_name]); $rawImageWidth = $imageInfo[0]; $rawImageHeight = $imageInfo[1]; //设置图片上传路径,放在upload文件夹,以年月日生成文件夹分类存储, //rtrim(base_url(), /)其实就是网站的根目录,大家自己处理 $path = rtrim(base_url(), /) . /upload/ . date(Ymd) . /; //确保目录可写 ensure_writable_dir($path); //文件名 $name = "$md5.0x{$rawImageWidth}x{$rawImageHeight}{$extension}"; //加入图片文件没变化到,也就是存在,就不必重复上传了,不存在则上传 $ret = file_exists($path . $name) ? true : move_uploaded_file($item[ mp_name], $serverPath . $name); if($ret === false) { $files[$index][error] = 8004; continue; } else { $files[$index][path] = $path . $name; //存图片路径 $files[$index][success] = true; //图片上传成功标志 $files[$index][width] = $rawImageWidth; //图片宽度 $files[$index][height] = $rawImageHeight; //图片高度 $success ++; //成功+1 } } //将图片已json形式返回给js处理页面 ,这里大家可以改成自己的json返回处理代码 echo json_encode(array( otal => count($files), success => $success, files => $files, )); }}/*********************************分割*************************************************///这里我附上ensure_writable_dir()函数的代码/*** 确保文件夹存在并可写** @param string $dir*/function ensure_writable_dir($dir) { if(!file_exists($dir)) { mkdir($dir, 0766, true); chmod($dir, 0766); chmod($dir, 0777); } else if(!is_writable($dir)) { chmod($dir, 0766); chmod($dir, 0777); if(!is_writable($dir)) { throw new FileSystemException("目录 $dir 不可写"); } }}

代码基本上都加上了注释,方便大家理解,虽然是用PHP处理图片上传,但你理解了上传时程序代码所处理的逻辑思路,将思路用于.net或者java里都还是可以的。

以上就是使用JQuery插件ajaxFileUpload 异步上传文件的整一个分析过程,希望对大家的学习有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。