


JQ plug-in ajaxFileUpload, php to implement pictures, data uploaded at the same time, _PHP tutorial
Jul 12, 2016 am 08:54 AMJQ plug-in ajaxFileUpload and php implement images and data are uploaded at the same time.
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為當前系統(tǒng)時間字符串,uri是外部傳入的json對象的一個參數(shù)</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 id="' + frameId + '" name="' + frameId + '">//</span><span>創(chuàng)建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>將動態(tài)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為當前系統(tǒng)時間字符串,fileElementId為頁面<input type='file' />的id,data的值需要根據(jù)傳入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 + '" id="' + formId + '" enctype="multipart/form-data" ></form>'); <span>//</span><span>創(chuàng)建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>根據(jù)data的內(nèi)容,創(chuàng)建隱藏域,這部分我還不知道是什么時候用到。估計是傳入json的時候,如果默認傳一些參數(shù)的話要用到。</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>把原對象插入到動態(tài)form的結(jié)尾處</span> <span> 42</span> <span>//</span><span>set attributes</span> <span> 43</span> jQuery(form).css('position', 'absolute'); <span>//</span><span>給動態(tài)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>把動態(tài)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的參數(shù)</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>取當前系統(tǒng)時間,目的是得到一個獨一無二的數(shù)字</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>創(chuàng)建動態(tài)form</span> <span> 54</span> <span>var</span> io = jQuery.createUploadIframe(id, s.secureuri); <span>//</span><span>創(chuàng)建動態(tài)iframe</span> <span> 55</span> <span>var</span> frameId = 'jUploadFrame' + id; <span>//</span><span>動態(tài)iframe的id</span> <span> 56</span> <span>var</span> formId = 'jUploadForm' + id; <span>//</span><span>動態(tài)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請求時發(fā)生</span> <span> 59</span> jQuery.event.trigger("ajaxStart"); <span>//</span><span>觸發(fā)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>觸發(fā)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>回調(diào)函數(shù)</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>動態(tài)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>動態(tài)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"都表示請求發(fā)出,并且有響應(yīng)</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>根據(jù)傳送的type類型,返回json對象,此時返回的data就是后臺操作后的返回結(jié)果</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>執(zhí)行上傳成功的操作</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>設(shè)置超時時間</span> <span>103</span> <span>try</span><span> { </span><span>104</span> jQuery(io).remove();<span>//</span><span>移除動態(tài)iframe</span> <span>105</span> jQuery(form).remove();<span>//</span><span>移除動態(tài)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>如果請求仍未完成,就發(fā)送超時信號</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>設(shè)置提交表單方式</span> <span>120</span> jQuery(form).attr('target', frameId);<span>//</span><span>返回的目標iframe,就是創(chuàng)建的動態(tài)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 請求從服務(wù)器加載數(shù)據(jù),同時傳入回調(diào)函數(shù)</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> * 構(gòu)建上傳文件信息 </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文件夾,沒有則創(chuàng)建</span> <span> 53</span> <span>mkdir</span>(<span>$path</span>,0777,<span>true</span>);<span>//</span><span>0777表示最大權(quán)限</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 傳到前臺返回時數(shù)組 </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>="超過了表單設(shè)置上傳文件的大小"; <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 allow uploading 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 result: [{"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"}]

Hot AI Tools

Undress AI Tool
Undress images for free

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

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

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

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

TosettherighttimezoneinPHP,usedate_default_timezone_set()functionatthestartofyourscriptwithavalididentifiersuchas'America/New_York'.1.Usedate_default_timezone_set()beforeanydate/timefunctions.2.Alternatively,configurethephp.inifilebysettingdate.timez

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

ThePhpfunctionSerialize () andunserialize () AreusedtoconvertcomplexdaTastructdestoresintostoraSandaBackagain.1.Serialize () c OnvertsdatalikecarraysorobjectsraystringcontainingTypeandstructureinformation.2.unserialize () Reconstruct theoriginalatataprom

You can embed PHP code into HTML files, but make sure that the file has an extension of .php so that the server can parse it correctly. Use standard tags to wrap PHP code, insert dynamic content anywhere in HTML. In addition, you can switch PHP and HTML multiple times in the same file to realize dynamic functions such as conditional rendering. Be sure to pay attention to the server configuration and syntax correctness to avoid problems caused by short labels, quotation mark errors or omitted end labels.

The key to writing clean and easy-to-maintain PHP code lies in clear naming, following standards, reasonable structure, making good use of comments and testability. 1. Use clear variables, functions and class names, such as $userData and calculateTotalPrice(); 2. Follow the PSR-12 standard unified code style; 3. Split the code structure according to responsibilities, and organize it using MVC or Laravel-style catalogs; 4. Avoid noodles-style code and split the logic into small functions with a single responsibility; 5. Add comments at key points and write interface documents to clarify parameters, return values ??and exceptions; 6. Improve testability, adopt dependency injection, reduce global state and static methods. These practices improve code quality, collaboration efficiency and post-maintenance ease.

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas
