JQ插件ajaxFileUpload、php实现图片,数据同时上传 - 云翳1895

代码结构如下:

1、HTML代码,没必要解释了。

 1 DOCTYPE html> 2 <html> 3     <head> 4         <meta charset="UTF-8"> 5         <title>文件上传title> 6         <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js">script> 7         <script src="uploads/ajaxFileUpload.js" type="text/javascript" charset="utf-8">script> 8         <script type="text/javascript"> 9             $(function(){10                 $('#ti').click(function(){11                     var data = { name: 'my name', description: 'short description' } 12                     $.ajaxFileUpload({13                         url: 'up.php',14                         secureuri: false,15                         data: data,16                         fileElementId: 'upf',17                         dataType: 'json',18                         success: function (data) {19                            // var datejson=eval(data);20                              //console.log(data[0].path_name)21                          $('#im').append(''+data[0].path_name+'">')%20%20%20%2022%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//console.log('')23%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20},24%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20error:%20function%20(data)%20{25%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.log(data)26%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}27%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20});28%2029%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20})30%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2031%20%20%20%20%20%20%20%20%20%20%20%20%20})32%20%20%20%20%20%20%20%20%20script>33%20%20%20%20%20head>34%20%20%20%20%20<body>35%20%20%20%20%2037%20%20%20%20%20%20%20%20%20<input%20%20type="file"%20name="upfm"%20id="upf"%20value=""%20/>38%20%20%20%20%20%20%20%20%20<input%20id='ti'%20type="button"%20value="提交"/>39%2040%20%20%20%20%20%20%20%20%20<div%20id="im">41%20%20%20%20%20%20%20%20%20%20%20%20%2042%20%20%20%20%20%20%20%20%20div>43%20%20%20%20%20%20%20%20%2044%20%20%20%20%20body>45%2046%20html>

%20

%20

2、关于ajaxFileUpload插件,在下面代码中如果你使用的是JQ1.9以上请复制1-12到你的ajaxFileUpload代码中,JQ在很早就废弃了handleError方法。注释关于代码的解释很清楚。

%20%201%20jQuery.extend({%20%202%20%20%20%20%20handleError:%20function(%20s,%20xhr,%20status,%20e%20)%20%20%20%20%20%20%20%20%20{%20%203%20%20%20%20%20%20%20%20%20%20%204%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%20s.error%20)%20{%20%205%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s.error.call(%20s.context%20||%20s,%20xhr,%20status,%20e%20);%20%206%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%20%207%20%20%208%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%209%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%20s.global%20)%20{%2010%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(s.context%20?%20jQuery(s.context)%20:%20jQuery.event).trigger(%20"ajaxError",%20[xhr,%20s,%20e]%20);%2011%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%2012%20%20%20%20},%2013%20%20%20%20%20createUploadIframe:%20function%20(id,%20uri)%20{//id为当前系统时间字符串,uri是外部传入的json对象的一个参数%2014%20%20%20%20%20%20%20%20%20//create%20frame%2015%20%20%20%20%20%20%20%20%20var%20frameId%20=%20'jUploadFrame'%20+%20id;%20//给iframe添加一个独一无二的id%2016%20%20%20%20%20%20%20%20%20var%20iframeHtml%20=%20'<iframe%20id="'%20+%20frameId%20+%20'"%20name="'%20+%20frameId%20+%20'"%20style="position:absolute;%20top:-9999px;%20left:-9999px"';%20//创建iframe元素%2017%20%20%20%20%20%20%20%20%20if%20(window.ActiveXObject)%20{//判断浏览器是否支持ActiveX控件%2018%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(typeof%20uri%20==%20'boolean')%20{%2019%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20iframeHtml%20+=%20'%20src="'%20+%20'javascript:false'%20+%20'"';%2020%20%20%20%20%20%20%20%20%20%20%20%20%20}%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(typeof%20uri%20==%20'string')%20{%2021%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20iframeHtml%20+=%20'%20src="'%20+%20uri%20+%20'"';%2022%20%20%20%20%20%20%20%20%20%20%20%20%20}%2023%20%20%20%20%20%20%20%20%20}%2024%20%20%20%20%20%20%20%20%20iframeHtml%20+=%20'%20/>';%2025%20%20%20%20%20%20%20%20%20jQuery(iframeHtml).appendTo(document.body);%20//将动态iframe追加到body中%2026%20%20%20%20%20%20%20%20%20return%20jQuery('#'%20+%20frameId).get(0);%20//返回iframe对象%2027%20%20%20%20%20},%2028%20%20%20%20%20createUploadForm:%20function%20(id,%20fileElementId,%20data)%20{//id为当前系统时间字符串,fileElementId为页面的id,data的值需要根据传入json的键来决定%2029%20%20%20%20%20%20%20%20%20//create%20form%20%20%20%20%2030%20%20%20%20%20%20%20%20%20var%20formId%20=%20'jUploadForm'%20+%20id;%20//给form添加一个独一无二的id%2031%20%20%20%20%20%20%20%20%20var%20fileId%20=%20'jUploadFile'%20+%20id;%20//添加一个独一无二的id%2032%20%20%20%20%20%20%20%20%20var%20form%20=%20jQuery('');%20//创建form元素%2033%20%20%20%20%20%20%20%20%20if%20(data)%20{//通常为false%2034%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20in%20data)%20{%2035%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery('').appendTo(form);%20//根据data的内容,创建隐藏域,这部分我还不知道是什么时候用到。估计是传入json的时候,如果默认传一些参数的话要用到。%2036%20%20%20%20%20%20%20%20%20%20%20%20%20}%2037%20%20%20%20%20%20%20%20%20}%20%20%20%20%20%20%20%20var%20oldElement%20=%20jQuery('#'%20+%20fileElementId);%20//得到页面中的对象%2038%20%20%20%20%20%20%20%20%20var%20newElement%20=%20jQuery(oldElement).clone();%20//克隆页面中的对象%2039%20%20%20%20%20%20%20%20%20jQuery(oldElement).attr('id',%20fileId);%20//修改原对象的id%2040%20%20%20%20%20%20%20%20%20jQuery(oldElement).before(newElement);%20//在原对象前插入克隆对象%2041%20%20%20%20%20%20%20%20%20jQuery(oldElement).appendTo(form);%20//把原对象插入到动态form的结尾处%2042%20%20%20%20%20%20%20%20%20//set%20attributes%2043%20%20%20%20%20%20%20%20%20jQuery(form).css('position',%20'absolute');%20//给动态form添加样式,使其浮动起来,%2044%20%20%20%20%20%20%20%20%20jQuery(form).css('top',%20'-1200px');%2045%20%20%20%20%20%20%20%20%20jQuery(form).css('left',%20'-1200px');%2046%20%20%20%20%20%20%20%20%20jQuery(form).appendTo('body');%20//把动态form插入到body中%2047%20%20%20%20%20%20%20%20%20return%20form;%2048%20%20%20%20%20},%2049%20%20%20%20%20ajaxFileUpload:%20function%20(s)%20{//这里s是个json对象,传入一些ajax的参数%2050%20%20%20%20%20%20%20%20%20//%20TODO%20introduce%20global%20settings,%20allowing%20the%20client%20to%20modify%20them%20for%20all%20requests,%20not%20only%20timeout%20%20%20%20%20%20%20%20%2051%20%20%20%20%20%20%20%20%20s%20=%20jQuery.extend({},%20jQuery.ajaxSettings,%20s);%20//此时的s对象是由jQuery.ajaxSettings和原s对象扩展后的对象%2052%20%20%20%20%20%20%20%20%20var%20id%20=%20new%20Date().getTime();%20//取当前系统时间,目的是得到一个独一无二的数字%2053%20%20%20%20%20%20%20%20%20var%20form%20=%20jQuery.createUploadForm(id,%20s.fileElementId,%20(typeof%20(s.data)%20==%20'undefined'%20?%20false%20:%20s.data));%20//创建动态form%2054%20%20%20%20%20%20%20%20%20var%20io%20=%20jQuery.createUploadIframe(id,%20s.secureuri);%20//创建动态iframe%2055%20%20%20%20%20%20%20%20%20var%20frameId%20=%20'jUploadFrame'%20+%20id;%20//动态iframe的id%2056%20%20%20%20%20%20%20%20%20var%20formId%20=%20'jUploadForm'%20+%20id;%20//动态form的id%2057%20%20%20%20%20%20%20%20%20//%20Watch%20for%20a%20new%20set%20of%20requests%2058%20%20%20%20%20%20%20%20%20if%20(s.global%20&&%20!jQuery.active++)%20{//当jQuery开始一个ajax请求时发生%2059%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.event.trigger("ajaxStart");%20//触发ajaxStart方法%2060%20%20%20%20%20%20%20%20%20}%20%20%20%20%20%20%20%20var%20requestDone%20=%20false;%20//请求完成标志%2061%20%20%20%20%20%20%20%20%20//%20Create%20the%20request%20object%2062%20%20%20%20%20%20%20%20%20var%20xml%20=%20{};%20%20%20%20%20%20%20%20if%20(s.global)%2063%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.event.trigger("ajaxSend",%20[xml,%20s]);%20//触发ajaxSend方法%2064%20%20%20%20%20%20%20%20%20//%20Wait%20for%20a%20response%20to%20come%20back%2065%20%20%20%20%20%20%20%20%20var%20uploadCallback%20=%20function%20(isTimeout)%20{//回调函数%2066%20%20%20%20%20%20%20%20%20%20%20%20%20var%20io%20=%20document.getElementById(frameId);%20//得到iframe对象%2067%20%20%20%20%20%20%20%20%20%20%20%20%20try%20{%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(io.contentWindow)%20{//动态iframe所在窗口对象是否存在%2068%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xml.responseText%20=%20io.contentWindow.document.body%20?%20io.contentWindow.document.body.innerHTML%20:%20null;%2069%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xml.responseXML%20=%20io.contentWindow.document.XMLDocument%20?%20io.contentWindow.document.XMLDocument%20:%20io.contentWindow.document;%2070%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%20else%20if%20(io.contentDocument)%20{//动态iframe的文档对象是否存在%2071%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xml.responseText%20=%20io.contentDocument.document.body%20?%20io.contentDocument.document.body.innerHTML%20:%20null;%2072%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xml.responseXML%20=%20io.contentDocument.document.XMLDocument%20?%20io.contentDocument.document.XMLDocument%20:%20io.contentDocument.document;%2073%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%2074%20%20%20%20%20%20%20%20%20%20%20%20%20}%20catch%20(e)%20{%2075%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.handleError(s,%20xml,%20null,%20e);%2076%20%20%20%20%20%20%20%20%20%20%20%20%20}%20%20%20%20%20%20%20%20%20%20%20%20if%20(xml%20||%20isTimeout%20==%20"timeout")%20{//xml变量被赋值或者isTimeout%20==%20"timeout"都表示请求发出,并且有响应%2077%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20requestDone%20=%20true;%20//请求完成%2078%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20status;%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20{%2079%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20status%20=%20isTimeout%20!=%20"timeout"%20?%20"success"%20:%20"error";%20//如果不是“超时”,表示请求成功%2080%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20Make%20sure%20that%20the%20request%20was%20successful%20or%20notmodified%2081%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(status%20!=%20"error")%20{%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20process%20the%20data%20(runs%20the%20xml%20through%20httpData%20regardless%20of%20callback)%2082%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20data%20=%20jQuery.uploadHttpData(xml,%20s.dataType);%20//根据传送的type类型,返回json对象,此时返回的data就是后台操作后的返回结果%2083%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20If%20a%20local%20callback%20was%20specified,%20fire%20it%20and%20pass%20it%20the%20data%2084%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(s.success)%2085%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s.success(data,%20status);%20//执行上传成功的操作%2086%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20Fire%20the%20global%20callback%2087%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(s.global)%2088%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.event.trigger("ajaxSuccess",%20[xml,%20s]);%2089%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%20else%2090%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.handleError(s,%20xml,%20status);%2091%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%20catch%20(e)%20{%2092%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20status%20=%20"error";%2093%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.handleError(s,%20xml,%20status,%20e);%2094%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20The%20request%20was%20completed%2095%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(s.global)%2096%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.event.trigger("ajaxComplete",%20[xml,%20s]);%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20Handle%20the%20global%20AJAX%20counter%2097%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(s.global%20&&%20!%20--jQuery.active)%2098%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.event.trigger("ajaxStop");%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20Process%20result%2099%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(s.complete)100%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s.complete(xml,%20status);101%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(io).unbind();//移除iframe的事件处理程序102%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout(function%20()%20{//设置超时时间103%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20{104%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(io).remove();//移除动态iframe105%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(form).remove();//移除动态form106%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%20catch%20(e)%20{107%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.handleError(s,%20xml,%20null,%20e);108%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}109%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20},%20100)110%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xml%20=%20null111%20%20%20%20%20%20%20%20%20%20%20%20%20}112%20%20%20%20%20%20%20%20%20}%20%20%20%20%20%20%20%20//%20Timeout%20checker113%20%20%20%20%20%20%20%20%20if%20(s.timeout%20>%200)%20{//超时检测114%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout(function%20()%20{%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20Check%20to%20see%20if%20the%20request%20is%20still%20happening115%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!requestDone)%20uploadCallback("timeout");//如果请求仍未完成,就发送超时信号116%20%20%20%20%20%20%20%20%20%20%20%20%20},%20s.timeout);117%20%20%20%20%20%20%20%20%20}%20%20%20%20%20%20%20%20try%20{%20%20%20%20%20%20%20%20%20%20%20%20var%20form%20=%20jQuery('#'%20+%20formId);118%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(form).attr('action',%20s.url);//传入的ajax页面导向url119%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(form).attr('method',%20'POST');//设置提交表单方式120%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(form).attr('target',%20frameId);//返回的目标iframe,就是创建的动态iframe121%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(form.encoding)%20{//选择编码方式122%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(form).attr('encoding',%20'multipart/form-data');123%20%20%20%20%20%20%20%20%20%20%20%20%20}%20%20%20%20%20%20%20%20%20%20%20%20else%20{124%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(form).attr('enctype',%20'multipart/form-data');125%20%20%20%20%20%20%20%20%20%20%20%20%20}126%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(form).submit();//提交form表单127%20%20%20%20%20%20%20%20%20}%20catch%20(e)%20{128%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.handleError(s,%20xml,%20null,%20e);129%20%20%20%20%20%20%20%20%20}130%20%20%20%20%20%20%20%20%20jQuery('#'%20+%20frameId).load(uploadCallback);%20//ajax%20请求从服务器加载数据,同时传入回调函数131%20%20%20%20%20%20%20%20%20return%20{%20abort:%20function%20()%20{%20}%20};132%20%20%20%20%20},133%20%20%20%20%20uploadHttpData:%20function%20(r,%20type)%20{%20%20%20%20%20%20%20%20var%20data%20=%20!type;134%20%20%20%20%20%20%20%20%20data%20=%20type%20==%20"xml"%20||%20data%20?%20r.responseXML%20:%20r.responseText;%20%20%20%20%20%20%20%20//%20If%20the%20type%20is%20"script",%20eval%20it%20in%20global%20context135%20%20%20%20%20%20%20%20%20if%20(type%20==%20"script")136%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery.globalEval(data);%20%20%20%20%20%20%20%20//%20Get%20the%20JavaScript%20object,%20if%20JSON%20is%20used.137%20%20%20%20%20%20%20%20%20if%20(type%20==%20"json")138%20%20%20%20%20%20%20%20%20%20%20%20%20eval("data%20=%20"%20+%20data);%20%20%20%20%20%20%20%20//%20evaluate%20scripts%20within%20html139%20%20%20%20%20%20%20%20%20if%20(type%20==%20"html")140%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery("
").html(data).evalScripts();%20%20%20%20%20%20%20%20return%20data;141%20%20%20%20%20}142%20})

%20

%20

3。php代码

%20%201%20<?php%20%202%20%20%20%20%20//print_r($_FILES);%20%203%20//echo%20json_encode(print_r($_FILES));%20%204%20%20%205%20/**%20%206%20%20*%20生成唯一字符串%20%207%20%20*%20@return%20string%20%208%20%20*/%20%209%20function%20getUniName(){%2010%20%20%20%20%20return%20md5(uniqid(microtime(true),true));%2011%20}%2012%20%2013%20/**%2014%20%20*%20得到文件的扩展名%2015%20%20*%20@param%20string%20$filename%2016%20%20*%20@return%20string%2017%20%20*/%2018%20function%20getExt($filename){%2019%20%20%20%20%20return%20strtolower(end(explode(".",$filename)));%2020%20}%2021%20%2022%20/**%2023%20%20*%20构建上传文件信息%2024%20%20*%20@return%20array%2025%20%20*/%2026%20%2027%20function%20buildInfo(){%2028%20%20%20%20%20if(!$_FILES){%2029%20%20%20%20%20%20%20%20%20return%20;%2030%20%20%20%20%20}%2031%20%20%20%20%20$i=0;%2032%20%20%20%20%20foreach($_FILES%20as%20$v){%2033%20%20%20%20%20%20%20%20%20//单文件%2034%20%20%20%20%20%20%20%20%20if(is_string($v['name'])){%2035%20%20%20%20%20%20%20%20%20%20%20%20%20$files[$i]=$v;%2036%20%20%20%20%20%20%20%20%20%20%20%20%20$i++;%2037%20%20%20%20%20%20%20%20%20}else{%2038%20%20%20%20%20%20%20%20%20%20%20%20%20//多文件%2039%20%20%20%20%20%20%20%20%20%20%20%20%20foreach($v['name']%20as%20$key=>$val){%2040%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$files[$i]['name']=$val;%2041%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$files[$i]['size']=$v['size'][$key];%2042%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$files[$i]['tmp_name']=$v['tmp_name'][$key];%2043%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$files[$i]['error']=$v['error'][$key];%2044%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$files[$i]['type']=$v['type'][$key];%2045%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$i++;%2046%20%20%20%20%20%20%20%20%20%20%20%20%20}%2047%20%20%20%20%20%20%20%20%20}%2048%20%20%20%20%20}%2049%20%20%20%20%20return%20$files;%2050%20}%2051%20function%20uploadFile($path="uploads",$allowExt=array("gif","jpeg","png","jpg","wbmp"),$maxSize=2097152,$imgFlag=true){%2052%20%20%20%20%20if(!file_exists($path)){//判断是否有$path文件夹,没有则创建%2053%20%20%20%20%20%20%20%20%20mkdir($path,0777,true);//0777表示最大权限%2054%20%20%20%20%20}%2055%20%20%20%20%20$i=0;%2056%20%20%20%20%20$files=buildInfo();%2057%20%20%20%20%20if(!($files&&is_array($files))){%2058%20%20%20%20%20%20%20%20%20return%20;%2059%20%20%20%20%20}%2060%20%20%20%20%20foreach($files%20as%20$file){%2061%20%20%20%20%20%20%20%20%20if($file['error']===UPLOAD_ERR_OK){//就是0%2062%20%20%20%20%20%20%20%20%20%20%20%20%20$ext=getExt($file['name']);%2063%20%20%20%20%20%20%20%20%20%20%20%20%20//检测文件的扩展名%2064%20%20%20%20%20%20%20%20%20%20%20%20%20if(!in_array($ext,$allowExt)){%2065%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20exit("非法文件类型");%2066%20%20%20%20%20%20%20%20%20%20%20%20%20}%2067%20%20%20%20%20%20%20%20%20%20%20%20%20//校验是否是一个真正的图片类型%2068%20%20%20%20%20%20%20%20%20%20%20%20%20if($imgFlag){%2069%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(!getimagesize($file['tmp_name'])){%2070%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20exit("不是真正的图片类型");%2071%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2072%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}else{%2073%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$file["filesize"]=getimagesize($file['tmp_name']);%2074%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//把文件信息付给$file%20传到前台返回时数组%2075%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//如%20[720,%201280,%202,%20"width="720"%20height="1280"",%208,%203,%20"image/jpeg"]%2076%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%2077%20%20%20%20%20%20%20%20%20%20%20%20%20}%2078%20%20%20%20%20%20%20%20%20%20%20%20%20//上传文件的大小%2079%20%20%20%20%20%20%20%20%20%20%20%20%20if($file['size']>$maxSize){%2080%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20exit("上传文件过大");%2081%20%20%20%20%20%20%20%20%20%20%20%20%20}%2082%20%20%20%20%20%20%20%20%20%20%20%20%20if(!is_uploaded_file($file['tmp_name'])){%2083%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20exit("不是通过HTTP%20POST方式上传上来的");%2084%20%20%20%20%20%20%20%20%20%20%20%20%20}%2085%20%20%20%20%20%20%20%20%20%20%20%20%20$filename=getUniName().".".$ext;//改文件重新命名%2086%20%20%20%20%20%20%20%20%20%20%20%20%20$destination=$path."/".$filename;%2087%20%20%20%20%20%20%20%20%20%20%20%20%20if(move_uploaded_file($file['tmp_name'],%20$destination)){%2088%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$file['name']=$filename;%2089%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$file['path_name']=$destination;%2090%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20unset($file['tmp_name'],$file['size'],$file['type']);//去除不需要传给的信息%2091%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$uploadedFiles[$i]=$file;%2092%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$i++;%2093%20%20%20%20%20%20%20%20%20%20%20%20%20}%2094%20%20%20%20%20%20%20%20%20}else{%2095%20%20%20%20%20%20%20%20%20%20%20%20%20switch($file['error']){%2096%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%201:%2097%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$mes="超过了配置文件上传文件的大小";//UPLOAD_ERR_INI_SIZE%2098%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;%2099%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%202:100%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$mes="超过了表单设置上传文件的大小";%20%20%20%20%20%20%20%20%20%20%20%20//UPLOAD_ERR_FORM_SIZE101%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;102%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%203:103%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$mes="文件部分被上传";//UPLOAD_ERR_PARTIAL104%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;105%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%204:106%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$mes="没有文件被上传1111";//UPLOAD_ERR_NO_FILE107%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;108%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%206:109%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$mes="没有找到临时目录";//UPLOAD_ERR_NO_TMP_DIR110%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;111%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%207:112%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$mes="文件不可写";//UPLOAD_ERR_CANT_WRITE;113%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;114%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%208:115%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$mes="由于PHP的扩展程序中断了文件上传";//UPLOAD_ERR_EXTENSION116%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;117%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}118%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20echo%20$mes;119%20%20%20%20%20%20%20%20%20%20%20%20%20}120%20%20%20%20%20}121%20%20%20%20%20return%20$uploadedFiles;122%20};123%20124%20$rows=uploadFile($path="uploads",$allowExt=array("gif","jpeg","png","jpg","wbmp"),$maxSize=2097152,$imgFlag=true);125%20126%20echo%20json_encode($rows);

%20

uploadFile($path="uploads",$allowExt=array("gif","jpeg","png","jpg","wbmp"),$maxSize=2097152,$imgFlag=true);

这段php代码可以更改的可以上传其他文件和大小限制。getimagesize是判断是否为病毒文件更改后缀。

上述代码直接复制即可完成图片和用户数据的同时上传。

返回结果:[{"name":"d032a4ee7e957d956c8af0039d7e3085.jpg","error":0,"filesiz":{"0":720,"1":1280,"2":2,"3":"width=\"720\" height=\"1280\"","bits":8,"channels":3,"mime":"image\/jpeg"},"path_name":"uploads\/d032a4ee7e957d956c8af0039d7e3085.jpg"}]

郑重声明:本文版权包含图片归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们(delete@yzlfxy.com)修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

留言与评论(共有 0 条评论)
昵称:
匿名发表
   
验证码: