jquery ajax php 无刷新上传文件 带 遮罩 进度条 效果的哟
在很多项目中都会叫用户上传东西这些的,自从接触了jquery 和ajax之后就不管做什么,首先都会想到这个,我这个人呢?是比较重视客户体验的,这次我这边负责的是后台板块,然后就有一块是要求用户上传照片的,当然就想到了无刷新上传了呀,一般的jquery+ajax的话传递给php的data我习惯用json,然后就不知道怎么怎么把$_FILES数组中的内容给php,我要用move_uploaded_file这个函数来吧$_FILES['file']['tmp_name']移动到我想要的位置,tmp_name是上传的临时路径了啦,具体参看手册,数组中有很多关于文件的记录的。查询了很多记录,要达到无刷新上传,那么有的解决方法是用生成frame来做得,找了很久很久,找到一个插件,jquery的,叫jquery.form,是个表单插件,有兴趣的同学可以上网查看,我这里只说我这个的实现而已,ok,上代码:
<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 http-equiv</span><span ="Content-Type"</span><span content</span><span ="text/html; charset=UTF-8"</span><span ></span> <span 5</span> <span <</span><span title</span><span ></span>jQuery+php实现ajax文件上传<span </</span><span title</span><span ></span> <span 6</span> <span <</span><span script </span><span type</span><span ="text/javascript"</span><span src</span><span ="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"</span><span ></</span><span script</span><span ></span> <span 7</span> <span <</span><span script </span><span type</span><span ="text/javascript"</span><span src</span><span ="jquery.form.js"</span><span ></</span><span script</span><span ></span> <span 8</span> <span <</span><span style </span><span type</span><span ="text/css"</span><span ></span> <span 9</span> <span .opacity</span><span {</span> <span 10</span> <span opacity</span><span :</span><span 0.3</span><span ;</span> <span 11</span> <span filter</span><span :</span><span alpha(opacity=30)</span><span ;</span> <span 12</span> <span background-color</span><span :</span><span black</span><span ;</span> <span 13</span> <span }</span> <span 14</span> <span .mask</span><span {</span> <span 15</span> <span 16</span> <span position</span><span :</span><span fixed</span><span ;</span> <span 17</span> <span _position</span><span :</span><span absolute</span><span ;</span> <span 18</span> <span top</span><span :</span><span 0</span><span ;</span> <span 19</span> <span left</span><span :</span><span 0</span><span ;</span> <span 20</span> <span z-index</span><span :</span><span 1000</span><span ;</span> <span 21</span> <span }</span> <span 22</span> <span #main</span><span {</span> <span 23</span> <span width</span><span :</span><span 980px</span><span ;</span> <span 24</span> <span margin</span><span :</span><span 0px auto</span><span ;</span> <span 25</span> <span text-align</span><span :</span><span center</span><span ;</span> <span 26</span> <span }</span> <span 27</span> <span #loading</span><span {</span> <span 28</span> <span background-color</span><span :</span><span white</span><span ;</span> <span 29</span> <span width</span><span :</span><span 100px</span><span ;</span> <span 30</span> <span height</span><span :</span><span 20px</span><span ;</span> <span 31</span> <span position</span><span :</span><span fixed</span><span ;</span> <span 32</span> <span _position</span><span :</span><span absolute</span><span ;</span> <span 33</span> <span text-align</span><span :</span><span center</span><span ;</span> <span 34</span> <span border-style</span><span :</span><span groove</span><span ;</span> <span 35</span> <span z-index</span><span :</span><span 2000</span><span ;</span> <span 36</span> <span }</span> <span 37</span> <span </</span><span style</span><span ></span> <span 38</span> <span </</span><span head</span><span ></span> <span 39</span> <span 40</span> <span <</span><span body</span><span ></span> <span 41</span> <span <</span><span div </span><span id</span><span ="main"</span><span ></span> <span 42</span> <span <</span><span div </span><span class</span><span ="demo"</span><span ></span> <span 43</span> <span <</span><span div </span><span class</span><span ="btn"</span><span ></span> <span 44</span> <span <</span><span span</span><span ></span>添加附件<span </</span><span span</span><span ></span> <span 45</span> <span <</span><span input </span><span id</span><span ="fileupload"</span><span type</span><span ="file"</span><span name</span><span ="mypic"</span><span ></span> <span 46</span> <span </</span><span div</span><span ></span> <span 47</span> <span <</span><span div </span><span id</span><span ="zhezhao"</span><span ></span> <span 48</span> <span <</span><span div </span><span id</span><span ="loading"</span><span ></span> <span 49</span> <span <</span><span span </span><span class</span><span ="bar"</span><span ><</span><span img </span><span src</span><span ="loading.gif"</span> <span /></</span><span span</span><span ><</span><span span </span><span class</span><span ="percent"</span><span ></span>0%<span </</span><span span </span><span ></span> <span 50</span> <span </</span><span div</span><span ></span> <span 51</span> <span </</span><span div</span><span ></span> <span 52</span> <span <</span><span div </span><span id</span><span ="showimg"</span><span ></</span><span div</span><span ></span> <span 53</span> <span </</span><span div</span><span ></span> <span 54</span> <span </</span><span div</span><span ></span> <span 55</span> <span 56</span> <span <</span><span script </span><span type</span><span ="text/javascript"</span><span ></span> <span 57</span> <span $(</span><span function</span><span () { </span><span 58</span> <span var</span><span percent </span><span =</span><span $(</span><span '</span><span .percent</span><span '</span><span ); </span><span 59</span> <span var</span><span showimg </span><span =</span><span $(</span><span '</span><span #showimg</span><span '</span><span ); </span><span 60</span> <span var</span><span zhezhao </span><span =</span><span $(</span><span "</span><span #zhezhao</span><span "</span><span ); </span><span 61</span> <span var</span><span btn </span><span =</span><span $(</span><span "</span><span .btn span</span><span "</span><span ); </span><span 62</span> <span zhezhao.hide(); </span><span 63</span> <span $(</span><span "</span><span #fileupload</span><span "</span><span ).wrap(</span><span "</span><span <form id='myupload' action='action.php' method='post' enctype='multipart/form-data'></form></span><span "</span><span ); </span><span 64</span> <span $(</span><span "</span><span #fileupload</span><span "</span><span ).change(</span><span function</span><span (){ </span><span 65</span> <span $(</span><span "</span><span #myupload</span><span "</span><span ).ajaxSubmit({ </span><span 66</span> <span dataType: </span><span '</span><span json</span><span '</span><span , </span><span 67</span> <span beforeSend: </span><span function</span><span () { </span><span 68</span> <span showimg.empty(); </span><span 69</span> <span zhezhao.show(); </span><span 70</span> <span var</span><span percentVal </span><span =</span> <span '</span><span 0%</span><span '</span><span ; </span><span 71</span> <span percent.html(percentVal); </span><span 72</span> <span btn.html(</span><span "</span><span 上传中...</span><span "</span><span ); </span><span 73</span> <span }, </span><span 74</span> <span uploadProgress: </span><span function</span><span (event, position, total, percentComplete) { </span><span 75</span> <span $(</span><span "</span><span #zhezhao</span><span "</span><span ).attr(</span><span "</span><span class</span><span "</span><span ,</span><span "</span><span mask opacity</span><span "</span><span ); </span><span 76</span> <span $(</span><span "</span><span #zhezhao</span><span "</span><span ).css(</span><span '</span><span width</span><span '</span><span ,$(window).width()); </span><span 77</span> <span $(</span><span "</span><span #zhezhao</span><span "</span><span ).css(</span><span '</span><span height</span><span '</span><span ,$(window).height()); </span><span 78</span> <span var</span><span percentVal </span><span =</span><span percentComplete </span><span +</span> <span '</span><span %</span><span '</span><span ; </span><span 79</span> <span percent.html(percentVal); </span><span 80</span> <span $(</span><span "</span><span #loading</span><span "</span><span ).css(</span><span '</span><span margin-left</span><span '</span><span ,$(window).width()</span><span /</span><span 2-50);</span> <span 81</span> <span $(</span><span "</span><span #loading</span><span "</span><span ).css(</span><span '</span><span margin-top</span><span '</span><span ,$(window).height()</span><span /</span><span 2-10);</span> <span 82</span> <span }, </span><span 83</span> <span success: </span><span function</span><span (data) { </span><span 84</span> <span var</span><span img </span><span =</span> <span "</span><span files/</span><span "</span><span +</span><span data.pic; </span><span 85</span> <span zhezhao.hide(); </span><span 86</span> <span showimg.html(</span><span "</span><span <img src='</span alt="jquery ajax php 无刷新上传文件 带 遮罩 进度条 效果的哟" ><span "</span><span +</span><span img</span><span +</span><span "</span><span '></span><span "</span><span ); </span><span 87</span> <span btn.html(</span><span "</span><span 添加附件</span><span "</span><span ); </span><span 88</span> <span }, </span><span 89</span> <span error:</span><span function</span><span (xhr){ </span><span 90</span> <span btn.html(</span><span "</span><span 上传失败</span><span "</span><span ); </span><span 91</span> <span } </span><span 92</span> <span }); </span><span 93</span> <span }); </span><span 94</span> <span }); </span><span 95</span> <span </</span><span script</span><span ></span> <span 96</span> <span 97</span> <span </</span><span body</span><span ></span> <span 98</span> <span </</span><span html</span><span ></span>
响应页面action.php中只是简单的处理上传,然后以json数据的形式返回,供前台显示
<span 1</span> <?<span php </span><span 2</span> <span 3</span> <span $picname</span> = <span $_FILES</span>['mypic']['name'<span ]; </span><span 4</span> <span $picsize</span> = <span $_FILES</span>['mypic']['size'<span ]; </span><span 5</span> <span if</span> (<span $picname</span> != ""<span ) { </span><span 6</span> <span if</span> (<span $picsize</span> > 1024000<span ) { </span><span 7</span> <span echo</span> '图片大小不能超过1M'<span ; </span><span 8</span> <span exit</span><span ; </span><span 9</span> <span } </span><span 10</span> <span $type</span> = <span strstr</span>(<span $picname</span>, '.'<span ); </span><span 11</span> <span if</span> (<span $type</span> != ".gif" && <span $type</span> != ".jpg"<span ) { </span><span 12</span> <span echo</span> '图片格式不对!'<span ; </span><span 13</span> <span exit</span><span ; </span><span 14</span> <span } </span><span 15</span> <span $rand</span> = <span rand</span>(100, 999<span ); </span><span 16</span> <span $pics</span> = <span date</span>("YmdHis") . <span $rand</span> . <span $type</span><span ; </span><span 17</span> <span //</span><span 上传路径</span> <span 18</span> <span $pic_path</span> = "files/". <span $pics</span><span ; </span><span 19</span> <span move_uploaded_file</span>(<span $_FILES</span>['mypic']['tmp_name'], <span $pic_path</span><span ); </span><span 20</span> <span } </span><span 21</span> <span $size</span> = <span round</span>(<span $picsize</span>/1024,2<span ); </span><span 22</span> <span $arr</span> = <span array</span><span ( </span><span 23</span> 'name'=><span $picname</span>, <span 24</span> 'pic'=><span $pics</span>, <span 25</span> 'size'=><span $size</span> <span 26</span> <span ); </span><span 27</span> <span echo</span> json_encode(<span $arr</span><span ); </span><span 28</span> ?>
然后就完成啦。
好像还有jquery.form还没有给大家,这里就不说了,我网盘有写好的demo,需要的同学可以下载看。
jquery+ajax(php)无刷新上传文件带进度demo下载

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。
