亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

jQuery自制上傳頭像插件-附帶Demo實例(ajaxfileupload.js第三彈)

2019-11-14 16:27:23
字體:
來源:轉載
供稿:網友

這篇文章主要是對前兩篇關于Ajaxfileupload.js插件的文章

asp.net 使用ajaxfileupload.js插件出現上傳較大文件失敗的解決方法(ajaxfileupload.js第一彈)》

《jQuery 關于ajaxfileupload.js插件的逐步解析(ajaxfileupload.js第二彈)》

的一個收關。但是最初也是因為想做這么一個功能,一點一點的引發出了好多問題,不斷去學習,研究,才寫了這三篇。

早些時候已經實現了上傳頭像的功能,但是代碼卻是零零散散的,有html,有jQuery還有c#,所以就決定把這個功能獨立出來,當個插件用會方便很多。而事實是在封裝成插件的過程中,也學到了很多知識。

下面給大家看一下界面:

1、初始情況下

2、點擊上傳頭像,彈出選擇,預覽浮動框

3、選擇圖片

4、確定后,符合要求,會提示成功,不符合要求,也會做出相應的提示

5、預覽

6、確定上傳

下面是部分代碼

js部分:

$.fn.extend({    ShowTheFloatDiv: function (obj) {        $(this).click(function () {            $("body").find("*").not("div.float-outer").attr("disabled", "disabled");            var $float = jQuery.CreateTheFloatDiv();            $img_outer_obj = obj;        });    }});$.extend({    CreateTheFloatDiv: function () {        if ($(".float-outer").size() == 1) {            return $(".float-outer");        }        var left_offset = ($(window).width() - 600) / 2;//顯示在瀏覽器窗口比較正的位置,看著比較舒服        var top_offset = ($(window).height() - 278) / 3;        var theFloatDivHtml = "<div class='float-outer' style='left:" + left_offset + "px;top:" + top_offset + "px;'>";        theFloatDivHtml += "<div class='float-header float-border'>上傳頭像</div>";        theFloatDivHtml += "<div class='float-content'>";        theFloatDivHtml += "<div class='content-first-row'>文件名:";        theFloatDivHtml += "<input type='text' id='tb_filename' style='width:350px;' readonly /> ";        theFloatDivHtml += "<input type='button' id='btn_selectfile' value='選擇圖片' style='margin-left:-10px;' />";        theFloatDivHtml += "<input type='file' id='btn_upload' name='btn_upload' style='display:none;' accept='.jpg,.bmp,.gif' />";        theFloatDivHtml += "</div>";        theFloatDivHtml += "<div class='content-second-row'>";        theFloatDivHtml += "<span class='img-portrait' style='width:80px;'>圖片預覽:</span>";        theFloatDivHtml += "<div class='img-portrait' style='padding-top:30px;'>";        theFloatDivHtml += "<img src='' class=';        theFloatDivHtml += "<span>60*60</span>";        theFloatDivHtml += "</div>";        theFloatDivHtml += "<div style='float:left;'>";        theFloatDivHtml += "<img src='' class='preview120' alt=''/>";        theFloatDivHtml += "<span>120*120</span>";        theFloatDivHtml += "</div>";        theFloatDivHtml += "</div>";        theFloatDivHtml += "</div>";        theFloatDivHtml += "<div class='float-footer float-border'>";        theFloatDivHtml += "<input type='submit' value='確定' id='btn_ok' />";        theFloatDivHtml += "<input type='button' value='取消' id='btn_cancel' />";        theFloatDivHtml += "</div>";        theFloatDivHtml += "</div>";        $("body").append(theFloatDivHtml);        return $(".float-outer");    }});var $img_outer_obj;$(function () {    //取消事件    $("body").delegate("#btn_cancel", "click", function () {        $(".float-outer").remove();        $("body").find("*").removeAttr("disabled");    });    //選擇圖片事件    $("body").delegate("#btn_selectfile", "click", function () {        $("#btn_upload").trigger(e);    });    var e = jQuery.Event("click");    $("body").delegate("#btn_upload", "click", function () {    }).delegate("#btn_upload", "change", function () {        var curPATH = getFilePath($(this).get(0));        var fileName = curPATH.substring(curPATH.lastIndexOf("http://") + 1);        var type = curPATH.substring(curPATH.lastIndexOf('.') + 1).toLowerCase();        if (type == "jpg" || type == "gif" || type == "bmp") {            $("input#tb_filename").val(fileName);            if ($("input#tb_filename").val() == "") {                alert("請先上傳文件!");                return;            }            $.ajaxFileUpload            (                {                    url: '/UploadPortrait.aspx', //用于文件上傳的服務器端請求地址,需要根據實際情況進行修改                    secureuri: false, //一般設置為false                    fileElementId: $("input#btn_upload").attr("id"), //文件上傳空間的id屬性  <input type="file" id="file" name="file" />          //$("form").serialize(),表單序列化。指吧所有元素的ID,NAME 等全部發過去                    dataType: 'json', //返回值類型 一般設置為json                    complete: function () {//只要完成即執行,最后執行                    },                    success: function (data, status)  //服務器成功響應處理函數                    {                        if (typeof (data.error) != 'undefined') {                            if (data.error != '') {                                if (data.error == "1001") {                                }                                else if (data.error == "1002") {                                    $("input#tb_filename").val("");                                    $(".preview60").attr("src", "");                                    $(".preview120").attr("src", "");                                }                                alert(data.msg);                                return;                            } else {                                alert(data.msg);                            }                        }                        $(".preview60").attr("src", data.imgurl);                        $(".preview120").attr("src", data.imgurl);                    },                    error: function (data, status, e)//服務器響應失敗處理函數                    {                        alert(e);                    }                }            )            return false;        }        else {            alert("請選擇正確的圖片格式(.jpg|.gif|.bmp)");        }    });    $("body").delegate("#btn_ok", "click", function () {        $img_outer_obj.attr("src", $(".preview120").attr("src"));        $(".float-outer").remove();        $("body").find("*").removeAttr("disabled");    });    //移動浮動框    var offset_left, offset_top, moveFlag;    $("body").delegate(".float-header", "mousedown", function (e) {        moveFlag = true;        offset_left = e.pageX - $(this).offset().left;        offset_top = e.pageY - $(this).offset().top;        $("body").delegate(".float-header", "mousemove", function (e) {            if (moveFlag) {                $(".float-outer").CSS("left", e.pageX - offset_left + "px").css("top", e.pageY - offset_top + "px");            }        }).delegate(".float-header", "mouseup", function () {            moveFlag = false;        })    })});

C#部分:

因為上傳文件用到了ajax,需要先將圖片上傳到本地,這里也算是一個比較糾結的事情吧,因為如果想預覽,除非用一些插件,否則使用的方法都得是先上傳,再預覽這樣。這種來者都要不拒的事,看起來比較流氓哈~~

        HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;        string msg = string.Empty;        string error = string.Empty;        string imgurl = string.Empty;        protected void Page_Load(object sender, EventArgs e)        {            if (files.Count > 0)            {                if (System.IO.File.Exists(Server.MapPath("/UploadImages/") + files[0].FileName))                {                    msg = "圖片已存在";                    error = "1001";                    string res1 = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}";                    Response.Write(res1);                    Response.End();                    return;                }                if (files[0].ContentLength > 4 * 1024 * 1024)                {                    msg = "圖片大小不能超過4M";                    error = "1002";                    string res1 = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}";                    Response.Write(res1);                    Response.End();                    return;                }                try                {                    files[0].SaveAs(Server.MapPath("/UploadImages/") + System.IO.Path.GetFileName(files[0].FileName));                }                catch (System.IO.DirectoryNotFoundException)                {                }                msg = " 上傳成功! 圖片大小為:" + files[0].ContentLength + "K";                imgurl = "/UploadImages/" + files[0].FileName;                string res = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}";                Response.Write(res);                Response.End();            }        }

 

如何調用此插件

    <script type="text/javascript">        $(function () {            $("#btn_portrait").ShowTheFloatDiv($("#img_portrait"));        })            </script>

注意事項

必須在“上傳頭像”按鈕所在頁面引入以下幾個文件

UploadPortrait.css

ajaxfileupload.js

jquery-2.0.3.min.js(jQuery插件要求在1.4.2版本之上)

UploadPortrait.js

如果大家在使用過程中出現問題,可以先把前面相關的兩篇文章略讀一下,大概就能找到原因了。

大致這個功能就是如上這樣,感興趣的朋友可以從下面的地址下載Demo運行看看。此外想說的是,因為是頭像嘛,一定要存數據庫的,但是在Demo里我并沒有寫,這個東西就是看大家想怎么實現了,要是我的話,因為之前預覽都要將圖片存到本地,所以如果存數據庫的話,當然是會存圖片的url了,那這樣就比較好辦了。

總的來說,要比想像中的快些完成了這個插件,功能倒是達到了自己的預期,但是界面來說,還有很長的一段路要走。第一次寫jQuery插件,很多東西都不太專業,希望大牛們能多多給予指正和幫助。

Demo下載地址:http://files.VEVb.com/zhouhongyu1989/uploadportrait%E4%B8%8A%E4%BC%A0%E5%A4%B4%E5%83%8FDemo.rar

 

關于上傳的Demo補充內容:

 

上傳的demo有兩個問題需要說明一下,希望下載的朋友能夠注意到,并流暢運行。

 

1、因為demo是ASP.NET項目,所以大家如想正常運行,需要在本地新建一個web項目,把我上傳的uploadportrait.csproj這個文件添加進去。下次我會直接打包一個完整的web項目再上傳,這次沒做好希望大家給予諒解。另,我開發的時候Visual Studio版本為2010,這個望大家注意一下。

 

2、在調用插件的代碼部分,demo里寫的是

    <script type="text/Javascript">        $(function () {            $("#btn_portrait").ShowTheFloatDiv($("#img_portrait"));        })            </script>

應該把$(img_portrait)改成$("#img_portrait"),這個也是自己的失誤,下回會注意。

 

補充:

《jQuery 關于IE9上傳文件無法進入后臺問題的原因及解決辦法(ajaxfileupload.js第四彈)》

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区视频| 91精品在线影院| 欧美成在线观看| 97国产精品视频| 亚洲欧美国产日韩天堂区| 欧美大荫蒂xxx| 欧美又大又硬又粗bbbbb| 91精品国产高清久久久久久| 精品久久久久久久久国产字幕| 性色av一区二区三区| 国产98色在线| 久久艹在线视频| 国产精品网站入口| 欧洲s码亚洲m码精品一区| 欧美放荡办公室videos4k| 最新国产精品拍自在线播放| 日韩二区三区在线| 久久激情视频久久| 亚洲va欧美va国产综合剧情| 成人黄色短视频在线观看| 欧美视频在线观看免费| 成人网在线观看| 亚洲天堂久久av| 欧美激情视频免费观看| 亚洲第一色中文字幕| 亚洲天堂久久av| 成人国内精品久久久久一区| 亚洲第一视频网站| 亚洲美女精品成人在线视频| 国产精品久久久久久久久粉嫩av| 国产大片精品免费永久看nba| 萌白酱国产一区二区| 国内伊人久久久久久网站视频| 亚洲成人xxx| 成人网址在线观看| 日韩精品中文在线观看| 欧美激情在线观看视频| 日本欧美在线视频| 欧美老少配视频| 国产女人18毛片水18精品| 日本精品视频在线播放| 久久6精品影院| 久久精品99久久久久久久久| 日韩av网站在线| 国产精品女人久久久久久| 久久天天躁狠狠躁夜夜躁2014| 久热精品视频在线观看| 日韩av在线网站| 国产精品亚洲一区二区三区| 日韩电影中文字幕av| 91精品视频专区| 国产精品一区二区久久精品| 日韩在线视频网| 日韩精品欧美国产精品忘忧草| 成人精品一区二区三区电影免费| 精品在线观看国产| 国产精品久久久久久久久免费看| 久久这里只有精品视频首页| 欧美日韩在线观看视频| 成人做爽爽免费视频| 亚洲一区二区久久久久久久| 亚洲老板91色精品久久| 日韩免费精品视频| 黄色成人av在线| 国产成人+综合亚洲+天堂| 成人在线一区二区| 欧洲成人午夜免费大片| 国产丝袜精品第一页| 亚洲xxxx妇黄裸体| 91精品中文在线| 国产精品黄页免费高清在线观看| 久久亚洲精品小早川怜子66| 国产91精品久久久久久| 亚洲美腿欧美激情另类| 97**国产露脸精品国产| 一区二区三区日韩在线| 国产+人+亚洲| 亚洲精品中文字幕有码专区| 亚洲精品电影久久久| 国产精品极品美女粉嫩高清在线| 亚洲欧美一区二区精品久久久| 91免费精品国偷自产在线| 菠萝蜜影院一区二区免费| 欧美二区在线播放| 国产精品福利在线观看| 亚洲一区二区福利| 久久九九热免费视频| 在线观看国产精品日韩av| 51精品国产黑色丝袜高跟鞋| 欧美日韩激情视频| 亚洲欧美成人在线| 色婷婷综合成人av| 岛国视频午夜一区免费在线观看| 人人爽久久涩噜噜噜网站| 日韩精品中文字| 91视频国产一区| 狠狠色噜噜狠狠狠狠97| 中文字幕亚洲图片| 精品国产自在精品国产浪潮| 久久久久久一区二区三区| 91精品中文在线| 国产精品免费久久久久久| 成人性生交大片免费观看嘿嘿视频| 日本一区二区三区在线播放| 国产69精品99久久久久久宅男| 久久99久久久久久久噜噜| 国产亚洲日本欧美韩国| 久久精品视频导航| 欧美日韩国产va另类| 日韩av手机在线观看| 亚洲精品一区二区三区不| 成人在线视频福利| 国产精品久久综合av爱欲tv| 中文字幕精品网| 91精品国产乱码久久久久久久久| 亚洲韩国欧洲国产日产av| 亚洲精品久久久久| 精品欧美一区二区三区| 人人澡人人澡人人看欧美| 亚洲最大在线视频| 一个人看的www久久| 久久久www成人免费精品张筱雨| 欧美性少妇18aaaa视频| www.亚洲男人天堂| 色噜噜狠狠狠综合曰曰曰| 日韩精品视频免费专区在线播放| 欧美电影免费观看电视剧大全| 欧美在线视频免费观看| 久久久久久久久久久亚洲| 国产色婷婷国产综合在线理论片a| 日韩在线免费高清视频| 久久精品男人天堂| 视频在线一区二区| 欧美精品激情在线观看| 欧美另类69精品久久久久9999| 国产精品久久久久77777| 懂色aⅴ精品一区二区三区蜜月| 国产精品精品一区二区三区午夜版| 欧美在线一级va免费观看| 国内成人精品视频| 日韩在线观看免费高清| 亚洲精品日韩欧美| 欧洲中文字幕国产精品| 在线性视频日韩欧美| 亚洲一区第一页| 国产69精品久久久久99| 精品日韩中文字幕| 少妇高潮久久久久久潘金莲| 欧美在线一区二区三区四| 国产亚洲精品久久久久久777| 欧美xxxx综合视频| www国产亚洲精品久久网站| 欧美精品制服第一页| 91精品一区二区| 欧美香蕉大胸在线视频观看| 国产精品久久久久久久久粉嫩av| 久久久电影免费观看完整版| 亚洲免费人成在线视频观看| 51午夜精品视频| 色婷婷成人综合| 国产精品扒开腿做| 欧美激情一区二区三区高清视频| 亚洲色在线视频| 国产精品主播视频|