


JQ plug-in ajaxFileUpload and php implement pictures and data are uploaded at the same time ajaxfileupload garbled ajaxfileupload ie8 ajaxfileupload ie
The code structure is as follows:
1. HTML code, no need to explain.
<span> 1</span><span><!</span><span>DOCTYPE html</span><span>></span><span> 2</span><span><</span><span>html</span><span>></span><span> 3</span><span><</span><span>head</span><span>></span><span> 4</span><span><</span><span>meta </span><span>charset</span><span>="UTF-8"</span><span>></span><span> 5</span><span><</span><span>title</span><span>></span>文件上传<span></</span><span>title</span><span>></span><span> 6</span><span><</span><span>script </span><span>src</span><span>="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"</span><span>></</span><span>script</span><span>></span><span> 7</span><span><</span><span>script </span><span>src</span><span>="uploads/ajaxFileUpload.js"</span><span> type</span><span>="text/javascript"</span><span> charset</span><span>="utf-8"</span><span>></</span><span>script</span><span>></span><span> 8</span><span><</span><span>script </span><span>type</span><span>="text/javascript"</span><span>></span><span> 9</span><span> $(</span><span>function</span><span>(){ </span><span>10</span><span> $(</span><span>'</span><span>#ti</span><span>'</span><span>).click(</span><span>function</span><span>(){ </span><span>11</span><span>var</span><span> data </span><span>=</span><span> { name: </span><span>'</span><span>my name</span><span>'</span><span>, description: </span><span>'</span><span>short description</span><span>'</span><span> } </span><span>12</span><span> $.ajaxFileUpload({ </span><span>13</span><span> url: </span><span>'</span><span>up.php</span><span>'</span><span>, </span><span>14</span><span> secureuri: </span><span>false</span><span>, </span><span>15</span><span> data: data, </span><span>16</span><span> fileElementId: </span><span>'</span><span>upf</span><span>'</span><span>, </span><span>17</span><span> dataType: </span><span>'</span><span>json</span><span>'</span><span>, </span><span>18</span><span> success: </span><span>function</span><span> (data) { </span><span>19</span><span>//</span><span> var datejson=eval(data);</span><span>20</span><span>//</span><span>console.log(data[0].path_name)</span><span>21</span><span> $(</span><span>'</span><span>#im</span><span>'</span><span>).append(</span><span>'</span><span><img src="</span><span>'</span><span>+</span><span>data[</span><span>0</span><span>].path_name</span><span>+</span><span>'</span><span>"></span><span>'</span><span>) </span><span>22</span><span>//</span><span>console.log('<img src="'+data[0].path_name+'">')</span><span>23</span><span> }, </span><span>24</span><span> error: </span><span>function</span><span> (data) { </span><span>25</span><span> console.log(data) </span><span>26</span><span> } </span><span>27</span><span> }); </span><span>28</span><span>29</span><span> }) </span><span>30</span><span>31</span><span> }) </span><span>32</span><span></</span><span>script</span><span>></span><span>33</span><span></</span><span>head</span><span>></span><span>34</span><span><</span><span>body</span><span>></span><span>35</span><span><!--</span><span><form action="up.php" method="post" enctype="multipart/form-data"> </span><span>36</span><span> </form></span><span>--></span><span>37</span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="upfm"</span><span> id</span><span>="upf"</span><span> value</span><span>=""</span><span>/></span><span>38</span><span><</span><span>input </span><span>id</span><span>='ti' </span><span>type</span><span>="button"</span><span> value</span><span>="提交"</span><span>/></span><span>39</span><span>40</span><span><</span><span>div </span><span>id</span><span>="im"</span><span>></span><span>41</span><span>42</span><span></</span><span>div</span><span>></span><span>43</span><span>44</span><span></</span><span>body</span><span>></span><span>45</span><span>46</span><span></</span><span>html</span><span>></span>
2. Regarding the ajaxFileUpload plug-in, in the following code, if you are using JQ1.9 or above, please copy 1-12 to your ajaxFileUpload code. JQ abandoned the handleError method very early. Comments explain the code very clearly.
<span> 1</span><span>jQuery.extend({ </span><span> 2</span> handleError: <span>function</span><span>( s, xhr, status, e ) { </span><span> 3</span><span> 4</span><span>if</span><span> ( s.error ) { </span><span> 5</span> s.error.call( s.context ||<span> s, xhr, status, e ); </span><span> 6</span><span> } </span><span> 7</span><span> 8</span><span> 9</span><span>if</span><span> ( s.global ) { </span><span> 10</span> (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError"<span>, [xhr, s, e] ); </span><span> 11</span><span> } </span><span> 12</span><span> }, </span><span> 13</span> createUploadIframe: <span>function</span> (id, uri) {<span>//</span><span>id为当前系统时间字符串,uri是外部传入的json对象的一个参数</span><span> 14</span><span>//</span><span>create frame</span><span> 15</span><span>var</span> frameId = 'jUploadFrame' + id; <span>//</span><span>给iframe添加一个独一无二的id</span><span> 16</span><span>var</span> iframeHtml = '<iframe + frameId + '" name="' + frameId + '"'; <span>//</span><span>创建iframe元素</span><span> 17</span><span>if</span> (window.ActiveXObject) {<span>//</span><span>判断浏览器是否支持ActiveX控件</span><span> 18</span><span>if</span> (<span>typeof</span> uri == 'boolean'<span>) { </span><span> 19</span> iframeHtml += ' src="' + 'javascript:false' + '"'<span>; </span><span> 20</span> } <span>else</span><span>if</span> (<span>typeof</span> uri == 'string'<span>) { </span><span> 21</span> iframeHtml += ' src="' + uri + '"'<span>; </span><span> 22</span><span> } </span><span> 23</span><span> } </span><span> 24</span> iframeHtml += ' />'<span>; </span><span> 25</span> jQuery(iframeHtml).appendTo(document.body); <span>//</span><span>将动态iframe追加到body中</span><span> 26</span><span>return</span> jQuery('#' + frameId).get(0); <span>//</span><span>返回iframe对象</span><span> 27</span><span> }, </span><span> 28</span> createUploadForm: <span>function</span> (id, fileElementId, data) {<span>//</span><span>id为当前系统时间字符串,fileElementId为页面<input type='file' />的id,data的值需要根据传入json的键来决定</span><span> 29</span><span>//</span><span>create form </span><span> 30</span><span>var</span> formId = 'jUploadForm' + id; <span>//</span><span>给form添加一个独一无二的id</span><span> 31</span><span>var</span> fileId = 'jUploadFile' + id; <span>//</span><span>给<input type='file' />添加一个独一无二的id</span><span> 32</span><span>var</span> form = jQuery('<form action="" method="POST" name="' + formId + '" + formId + '" enctype="multipart/form-data" ></form>'); <span>//</span><span>创建form元素</span><span> 33</span><span>if</span> (data) {<span>//</span><span>通常为false</span><span> 34</span><span>for</span> (<span>var</span> i <span>in</span><span> data) { </span><span> 35</span> jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form); <span>//</span><span>根据data的内容,创建隐藏域,这部分我还不知道是什么时候用到。估计是传入json的时候,如果默认传一些参数的话要用到。</span><span> 36</span><span> } </span><span> 37</span> } <span>var</span> oldElement = jQuery('#' + fileElementId); <span>//</span><span>得到页面中的<input type='file' />对象</span><span> 38</span><span>var</span> newElement = jQuery(oldElement).clone(); <span>//</span><span>克隆页面中的<input type='file' />对象</span><span> 39</span> jQuery(oldElement).attr('id', fileId); <span>//</span><span>修改原对象的id</span><span> 40</span> jQuery(oldElement).before(newElement); <span>//</span><span>在原对象前插入克隆对象</span><span> 41</span> jQuery(oldElement).appendTo(form); <span>//</span><span>把原对象插入到动态form的结尾处</span><span> 42</span><span>//</span><span>set attributes</span><span> 43</span> jQuery(form).css('position', 'absolute'); <span>//</span><span>给动态form添加样式,使其浮动起来,</span><span> 44</span> jQuery(form).css('top', '-1200px'<span>); </span><span> 45</span> jQuery(form).css('left', '-1200px'<span>); </span><span> 46</span> jQuery(form).appendTo('body'); <span>//</span><span>把动态form插入到body中</span><span> 47</span><span>return</span><span> form; </span><span> 48</span><span> }, </span><span> 49</span> ajaxFileUpload: <span>function</span> (s) {<span>//</span><span>这里s是个json对象,传入一些ajax的参数</span><span> 50</span><span>//</span><span> TODO introduce global settings, allowing the client to modify them for all requests, not only timeout </span><span> 51</span> s = jQuery.extend({}, jQuery.ajaxSettings, s); <span>//</span><span>此时的s对象是由jQuery.ajaxSettings和原s对象扩展后的对象</span><span> 52</span><span>var</span> id = <span>new</span> Date().getTime(); <span>//</span><span>取当前系统时间,目的是得到一个独一无二的数字</span><span> 53</span><span>var</span> form = jQuery.createUploadForm(id, s.fileElementId, (<span>typeof</span> (s.data) == 'undefined' ? <span>false</span> : s.data)); <span>//</span><span>创建动态form</span><span> 54</span><span>var</span> io = jQuery.createUploadIframe(id, s.secureuri); <span>//</span><span>创建动态iframe</span><span> 55</span><span>var</span> frameId = 'jUploadFrame' + id; <span>//</span><span>动态iframe的id</span><span> 56</span><span>var</span> formId = 'jUploadForm' + id; <span>//</span><span>动态form的id</span><span> 57</span><span>//</span><span> Watch for a new set of requests</span><span> 58</span><span>if</span> (s.global && !jQuery.active++) {<span>//</span><span>当jQuery开始一个ajax请求时发生</span><span> 59</span> jQuery.event.trigger("ajaxStart"); <span>//</span><span>触发ajaxStart方法</span><span> 60</span> } <span>var</span> requestDone = <span>false</span>; <span>//</span><span>请求完成标志</span><span> 61</span><span>//</span><span> Create the request object</span><span> 62</span><span>var</span> xml = {}; <span>if</span><span> (s.global) </span><span> 63</span> jQuery.event.trigger("ajaxSend", [xml, s]); <span>//</span><span>触发ajaxSend方法</span><span> 64</span><span>//</span><span> Wait for a response to come back</span><span> 65</span><span>var</span> uploadCallback = <span>function</span> (isTimeout) {<span>//</span><span>回调函数</span><span> 66</span><span>var</span> io = document.getElementById(frameId); <span>//</span><span>得到iframe对象</span><span> 67</span><span>try</span> { <span>if</span> (io.contentWindow) {<span>//</span><span>动态iframe所在窗口对象是否存在</span><span> 68</span> xml.responseText = io.contentWindow.document.body ? io.contentWindow.document.body.innerHTML : <span>null</span><span>; </span><span> 69</span> xml.responseXML = io.contentWindow.document.XMLDocument ?<span> io.contentWindow.document.XMLDocument : io.contentWindow.document; </span><span> 70</span> } <span>else</span><span>if</span> (io.contentDocument) {<span>//</span><span>动态iframe的文档对象是否存在</span><span> 71</span> xml.responseText = io.contentDocument.document.body ? io.contentDocument.document.body.innerHTML : <span>null</span><span>; </span><span> 72</span> xml.responseXML = io.contentDocument.document.XMLDocument ?<span> io.contentDocument.document.XMLDocument : io.contentDocument.document; </span><span> 73</span><span> } </span><span> 74</span> } <span>catch</span><span> (e) { </span><span> 75</span> jQuery.handleError(s, xml, <span>null</span><span>, e); </span><span> 76</span> } <span>if</span> (xml || isTimeout == "timeout") {<span>//</span><span>xml变量被赋值或者isTimeout == "timeout"都表示请求发出,并且有响应</span><span> 77</span> requestDone = <span>true</span>; <span>//</span><span>请求完成</span><span> 78</span><span>var</span> status; <span>try</span><span> { </span><span> 79</span> status = isTimeout != "timeout" ? "success" : "error"; <span>//</span><span>如果不是“超时”,表示请求成功</span><span> 80</span><span>//</span><span> Make sure that the request was successful or notmodified</span><span> 81</span><span>if</span> (status != "error") { <span>//</span><span> process the data (runs the xml through httpData regardless of callback)</span><span> 82</span><span>var</span> data = jQuery.uploadHttpData(xml, s.dataType); <span>//</span><span>根据传送的type类型,返回json对象,此时返回的data就是后台操作后的返回结果</span><span> 83</span><span>//</span><span> If a local callback was specified, fire it and pass it the data</span><span> 84</span><span>if</span><span> (s.success) </span><span> 85</span> s.success(data, status); <span>//</span><span>执行上传成功的操作</span><span> 86</span><span>//</span><span> Fire the global callback</span><span> 87</span><span>if</span><span> (s.global) </span><span> 88</span> jQuery.event.trigger("ajaxSuccess"<span>, [xml, s]); </span><span> 89</span> } <span>else</span><span> 90</span><span> jQuery.handleError(s, xml, status); </span><span> 91</span> } <span>catch</span><span> (e) { </span><span> 92</span> status = "error"<span>; </span><span> 93</span><span> jQuery.handleError(s, xml, status, e); </span><span> 94</span> } <span>//</span><span> The request was completed</span><span> 95</span><span>if</span><span> (s.global) </span><span> 96</span> jQuery.event.trigger("ajaxComplete", [xml, s]); <span>//</span><span> Handle the global AJAX counter</span><span> 97</span><span>if</span> (s.global && ! --<span>jQuery.active) </span><span> 98</span> jQuery.event.trigger("ajaxStop"); <span>//</span><span> Process result</span><span> 99</span><span>if</span><span> (s.complete) </span><span>100</span><span> s.complete(xml, status); </span><span>101</span> jQuery(io).unbind();<span>//</span><span>移除iframe的事件处理程序</span><span>102</span> setTimeout(<span>function</span> () {<span>//</span><span>设置超时时间</span><span>103</span><span>try</span><span> { </span><span>104</span> jQuery(io).remove();<span>//</span><span>移除动态iframe</span><span>105</span> jQuery(form).remove();<span>//</span><span>移除动态form</span><span>106</span> } <span>catch</span><span> (e) { </span><span>107</span> jQuery.handleError(s, xml, <span>null</span><span>, e); </span><span>108</span><span> } </span><span>109</span> }, 100<span>) </span><span>110</span> xml = <span>null</span><span>111</span><span> } </span><span>112</span> } <span>//</span><span> Timeout checker</span><span>113</span><span>if</span> (s.timeout > 0) {<span>//</span><span>超时检测</span><span>114</span> setTimeout(<span>function</span> () { <span>//</span><span> Check to see if the request is still happening</span><span>115</span><span>if</span> (!requestDone) uploadCallback("timeout");<span>//</span><span>如果请求仍未完成,就发送超时信号</span><span>116</span><span> }, s.timeout); </span><span>117</span> } <span>try</span> { <span>var</span> form = jQuery('#' +<span> formId); </span><span>118</span> jQuery(form).attr('action', s.url);<span>//</span><span>传入的ajax页面导向url</span><span>119</span> jQuery(form).attr('method', 'POST');<span>//</span><span>设置提交表单方式</span><span>120</span> jQuery(form).attr('target', frameId);<span>//</span><span>返回的目标iframe,就是创建的动态iframe</span><span>121</span><span>if</span> (form.encoding) {<span>//</span><span>选择编码方式</span><span>122</span> jQuery(form).attr('encoding', 'multipart/form-data'<span>); </span><span>123</span> } <span>else</span><span> { </span><span>124</span> jQuery(form).attr('enctype', 'multipart/form-data'<span>); </span><span>125</span><span> } </span><span>126</span> jQuery(form).submit();<span>//</span><span>提交form表单</span><span>127</span> } <span>catch</span><span> (e) { </span><span>128</span> jQuery.handleError(s, xml, <span>null</span><span>, e); </span><span>129</span><span> } </span><span>130</span> jQuery('#' + frameId).load(uploadCallback); <span>//</span><span>ajax 请求从服务器加载数据,同时传入回调函数</span><span>131</span><span>return</span> { abort: <span>function</span><span> () { } }; </span><span>132</span><span> }, </span><span>133</span> uploadHttpData: <span>function</span> (r, type) { <span>var</span> data = !<span>type; </span><span>134</span> data = type == "xml" || data ? r.responseXML : r.responseText; <span>//</span><span> If the type is "script", eval it in global context</span><span>135</span><span>if</span> (type == "script"<span>) </span><span>136</span> jQuery.globalEval(data); <span>//</span><span> Get the JavaScript object, if JSON is used.</span><span>137</span><span>if</span> (type == "json"<span>) </span><span>138</span> eval("data = " + data); <span>//</span><span> evaluate scripts within html</span><span>139</span><span>if</span> (type == "html"<span>) </span><span>140</span> jQuery("<div>").html(data).evalScripts(); <span>return</span><span> data; </span><span>141</span><span> } </span><span>142</span> })
3. php code
<span> 1</span> <?<span>php </span><span> 2</span><span>//</span><span>print_r($_FILES); </span><span> 3</span><span>//echo json_encode(print_r($_FILES));</span><span> 4</span><span> 5</span><span>/*</span><span>* </span><span> 6</span><span> * 生成唯一字符串 </span><span> 7</span><span> * @return string </span><span> 8</span><span>*/</span><span> 9</span><span>function</span><span> getUniName(){ </span><span> 10</span><span>return</span><span>md5</span>(<span>uniqid</span>(<span>microtime</span>(<span>true</span>),<span>true</span><span>)); </span><span> 11</span><span>} </span><span> 12</span><span> 13</span><span>/*</span><span>* </span><span> 14</span><span> * 得到文件的扩展名 </span><span> 15</span><span> * @param string $filename </span><span> 16</span><span> * @return string </span><span> 17</span><span>*/</span><span> 18</span><span>function</span> getExt(<span>$filename</span><span>){ </span><span> 19</span><span>return</span><span>strtolower</span>(<span>end</span>(<span>explode</span>(".",<span>$filename</span><span>))); </span><span> 20</span><span>} </span><span> 21</span><span> 22</span><span>/*</span><span>* </span><span> 23</span><span> * 构建上传文件信息 </span><span> 24</span><span> * @return array </span><span> 25</span><span>*/</span><span> 26</span><span> 27</span><span>function</span><span> buildInfo(){ </span><span> 28</span><span>if</span>(!<span>$_FILES</span><span>){ </span><span> 29</span><span>return</span><span> ; </span><span> 30</span><span> } </span><span> 31</span><span>$i</span>=0<span>; </span><span> 32</span><span>foreach</span>(<span>$_FILES</span><span>as</span><span>$v</span><span>){ </span><span> 33</span><span>//</span><span>单文件</span><span> 34</span><span>if</span>(<span>is_string</span>(<span>$v</span>['name'<span>])){ </span><span> 35</span><span>$files</span>[<span>$i</span>]=<span>$v</span><span>; </span><span> 36</span><span>$i</span>++<span>; </span><span> 37</span> }<span>else</span><span>{ </span><span> 38</span><span>//</span><span>多文件</span><span> 39</span><span>foreach</span>(<span>$v</span>['name'] <span>as</span><span>$key</span>=><span>$val</span><span>){ </span><span> 40</span><span>$files</span>[<span>$i</span>]['name']=<span>$val</span><span>; </span><span> 41</span><span>$files</span>[<span>$i</span>]['size']=<span>$v</span>['size'][<span>$key</span><span>]; </span><span> 42</span><span>$files</span>[<span>$i</span>]['tmp_name']=<span>$v</span>['tmp_name'][<span>$key</span><span>]; </span><span> 43</span><span>$files</span>[<span>$i</span>]['error']=<span>$v</span>['error'][<span>$key</span><span>]; </span><span> 44</span><span>$files</span>[<span>$i</span>]['type']=<span>$v</span>['type'][<span>$key</span><span>]; </span><span> 45</span><span>$i</span>++<span>; </span><span> 46</span><span> } </span><span> 47</span><span> } </span><span> 48</span><span> } </span><span> 49</span><span>return</span><span>$files</span><span>; </span><span> 50</span><span>} </span><span> 51</span><span>function</span> uploadFile(<span>$path</span>="uploads",<span>$allowExt</span>=<span>array</span>("gif","jpeg","png","jpg","wbmp"),<span>$maxSize</span>=2097152,<span>$imgFlag</span>=<span>true</span><span>){ </span><span> 52</span><span>if</span>(!<span>file_exists</span>(<span>$path</span>)){<span>//</span><span>判断是否有$path文件夹,没有则创建</span><span> 53</span><span>mkdir</span>(<span>$path</span>,0777,<span>true</span>);<span>//</span><span>0777表示最大权限</span><span> 54</span><span> } </span><span> 55</span><span>$i</span>=0<span>; </span><span> 56</span><span>$files</span>=<span>buildInfo(); </span><span> 57</span><span>if</span>(!(<span>$files</span>&&<span>is_array</span>(<span>$files</span><span>))){ </span><span> 58</span><span>return</span><span> ; </span><span> 59</span><span> } </span><span> 60</span><span>foreach</span>(<span>$files</span><span>as</span><span>$file</span><span>){ </span><span> 61</span><span>if</span>(<span>$file</span>['error']===UPLOAD_ERR_OK){<span>//</span><span>就是0</span><span> 62</span><span>$ext</span>=getExt(<span>$file</span>['name'<span>]); </span><span> 63</span><span>//</span><span>检测文件的扩展名</span><span> 64</span><span>if</span>(!<span>in_array</span>(<span>$ext</span>,<span>$allowExt</span><span>)){ </span><span> 65</span><span>exit</span>("非法文件类型"<span>); </span><span> 66</span><span> } </span><span> 67</span><span>//</span><span>校验是否是一个真正的图片类型</span><span> 68</span><span>if</span>(<span>$imgFlag</span><span>){ </span><span> 69</span><span>if</span>(!<span>getimagesize</span>(<span>$file</span>['tmp_name'<span>])){ </span><span> 70</span><span>exit</span>("不是真正的图片类型"<span>); </span><span> 71</span><span> 72</span> }<span>else</span><span>{ </span><span> 73</span><span>$file</span>["filesize"]=<span>getimagesize</span>(<span>$file</span>['tmp_name'<span>]); </span><span> 74</span><span>//</span><span>把文件信息付给$file 传到前台返回时数组 </span><span> 75</span><span> //如 [720, 1280, 2, "width="720" height="1280"", 8, 3, "image/jpeg"]</span><span> 76</span><span> } </span><span> 77</span><span> } </span><span> 78</span><span>//</span><span>上传文件的大小</span><span> 79</span><span>if</span>(<span>$file</span>['size']><span>$maxSize</span><span>){ </span><span> 80</span><span>exit</span>("上传文件过大"<span>); </span><span> 81</span><span> } </span><span> 82</span><span>if</span>(!<span>is_uploaded_file</span>(<span>$file</span>['tmp_name'<span>])){ </span><span> 83</span><span>exit</span>("不是通过HTTP POST方式上传上来的"<span>); </span><span> 84</span><span> } </span><span> 85</span><span>$filename</span>=getUniName().".".<span>$ext</span>;<span>//</span><span>改文件重新命名</span><span> 86</span><span>$destination</span>=<span>$path</span>."/".<span>$filename</span><span>; </span><span> 87</span><span>if</span>(<span>move_uploaded_file</span>(<span>$file</span>['tmp_name'], <span>$destination</span><span>)){ </span><span> 88</span><span>$file</span>['name']=<span>$filename</span><span>; </span><span> 89</span><span>$file</span>['path_name']=<span>$destination</span><span>; </span><span> 90</span><span>unset</span>(<span>$file</span>['tmp_name'],<span>$file</span>['size'],<span>$file</span>['type']);<span>//</span><span>去除不需要传给的信息</span><span> 91</span><span>$uploadedFiles</span>[<span>$i</span>]=<span>$file</span><span>; </span><span> 92</span><span>$i</span>++<span>; </span><span> 93</span><span> } </span><span> 94</span> }<span>else</span><span>{ </span><span> 95</span><span>switch</span>(<span>$file</span>['error'<span>]){ </span><span> 96</span><span>case</span> 1: <span> 97</span><span>$mes</span>="超过了配置文件上传文件的大小";<span>//</span><span>UPLOAD_ERR_INI_SIZE</span><span> 98</span><span>break</span><span>; </span><span> 99</span><span>case</span> 2: <span>100</span><span>$mes</span>="超过了表单设置上传文件的大小"; <span>//</span><span>UPLOAD_ERR_FORM_SIZE</span><span>101</span><span>break</span><span>; </span><span>102</span><span>case</span> 3: <span>103</span><span>$mes</span>="文件部分被上传";<span>//</span><span>UPLOAD_ERR_PARTIAL</span><span>104</span><span>break</span><span>; </span><span>105</span><span>case</span> 4: <span>106</span><span>$mes</span>="没有文件被上传1111";<span>//</span><span>UPLOAD_ERR_NO_FILE</span><span>107</span><span>break</span><span>; </span><span>108</span><span>case</span> 6: <span>109</span><span>$mes</span>="没有找到临时目录";<span>//</span><span>UPLOAD_ERR_NO_TMP_DIR</span><span>110</span><span>break</span><span>; </span><span>111</span><span>case</span> 7: <span>112</span><span>$mes</span>="文件不可写";<span>//</span><span>UPLOAD_ERR_CANT_WRITE;</span><span>113</span><span>break</span><span>; </span><span>114</span><span>case</span> 8: <span>115</span><span>$mes</span>="由于PHP的扩展程序中断了文件上传";<span>//</span><span>UPLOAD_ERR_EXTENSION</span><span>116</span><span>break</span><span>; </span><span>117</span><span> } </span><span>118</span><span>echo</span><span>$mes</span><span>; </span><span>119</span><span> } </span><span>120</span><span> } </span><span>121</span><span>return</span><span>$uploadedFiles</span><span>; </span><span>122</span><span>}; </span><span>123</span><span>124</span><span>$rows</span>=uploadFile(<span>$path</span>="uploads",<span>$allowExt</span>=<span>array</span>("gif","jpeg","png","jpg","wbmp"),<span>$maxSize</span>=2097152,<span>$imgFlag</span>=<span>true</span><span>); </span><span>125</span><span>126</span><span>echo</span> json_encode(<span>$rows</span>);
uploadFile($path="uploads",$allowExt=array("gif","jpeg","png","jpg","wbmp"),$maxSize=2097152 ,$imgFlag=true);
This php code can be changed to upload other files and size limits. getimagesize is used to determine whether the suffix is changed for a virus file.
Copy the above code directly to complete the simultaneous upload of images and user data.
Return results: [{"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"}]
The above introduces the JQ plug-in ajaxFileUpload, PHP implementation of pictures, and data upload at the same time, including the content of ajaxfileupload. I hope it will be helpful to friends who are interested in PHP tutorials.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

In PHP, password_hash and password_verify functions should be used to implement secure password hashing, and MD5 or SHA1 should not be used. 1) password_hash generates a hash containing salt values to enhance security. 2) Password_verify verify password and ensure security by comparing hash values. 3) MD5 and SHA1 are vulnerable and lack salt values, and are not suitable for modern password security.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values and handle functions that may return null values.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.
