中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

bootstrap-wysiwyg結合ajax實現圖片上傳實時刷新功能
來源:易賢網 閱讀:1366 次 日期:2016-06-20 15:04:46
溫馨提示:易賢網小編為您整理了“bootstrap-wysiwyg結合ajax實現圖片上傳實時刷新功能”,方便廣大網友查閱!

這篇文章主要為大家詳細介紹了bootstrap-wysiwyg結合ajax實現圖片上傳實時刷新功能,感興趣的小伙伴們可以參考一下

最近由于項目需求,要實現一個前端文本編輯框,附帶圖片上傳實時查看的功能。比較了網上的幾款插件,首先是百度的UEitor,發現該框架過于龐大,一個小框架引入如此多的文件并不是我想看到的;其次是jQuery的easyUI,雖然個人版的是免費的,但是項目屬于公司業務,似乎用商業版的框架并不妥。考慮到項目的前端主要就是在bootstrap的基礎上構建起來的,最終選用了bootstrap-wysiwyg插件,它非常的精簡,輕巧而且擴展性強。

引入bootstrap-wysiwyg并且實現文本編輯功能十分的便捷,但是,我注意到,圖片上傳是用fileapi實現的。對于大多數網站,雖然用FileApi實現無上傳預覽用戶體驗非常好,但是真正存入數據庫的時候,我們還是希望能夠存儲圖片的在服務器的靜態路徑,而并非字符串化的圖片。簡而言之,我們需要對bootstrap-wysiwyg(以下簡稱WY)做稍許改寫。

首先我們來觀察下頁面上圖片控件,其它的控件略過,查一下源碼,很容易發現如下代碼:

<div class="btn-group">

 <a class="btn" title="Insert picture (or just drag & drop)" id="pictureBtn">

 <i class="icon-picture"></i></a>

    <input type="file" data-role="magic-overlay"

      data-target="#pictureBtn"

   data-edit="insertImage" />

</div>

做一下說明,data-role,data-target屬性是bootstrap中預定義的事件,在這里我們可以理解為布局相關,不用考慮。關鍵點來了,第三個屬性data-edit,bootstrap中并沒有這一事件,觀察bootstrap-wysiwyg.js,可以發現這樣一些代碼:

toolbar.find('input[type=file][data-' + options.commandRole + ']')

     .change( ...

     ...

commandRole : 'edit',

也就是說,該屬性其實是為了方便選擇器而實現的,相當于給圖片按鈕添加了監聽器事件。

我們接著研究一下WY圖片預覽的實現,第一步,就像上面代碼展示的一樣,監聽器捕捉到fileInput的change事件,做出響應,調用insertFiles函數

restoreSelection();

if (this.type === 'file' && this.files && this.files.length > 0) {

 insertFiles(this.files);

}

saveSelection();

his.value = '';

找到insertFiles函數

insertFiles = function (files) {

    editor.focus();

    $.each(files, function (idx, fileInfo) {

     if (/^image\//.test(fileInfo.type)) {

      $.when(readFileIntoDataUrl(fileInfo)).done(function (dataUrl) {

       execCommand('insertimage', dataUrl);

      }).fail(function (e) {

       options.fileUploadError("file-reader", e);

      });

     } else {

      options.fileUploadError("unsupported-file-type", fileInfo.type);

     }

    });

   }

我們注意到它使用了jQuery的$.Deferred()方法,先調用了一個readFileIntoDataUrl方法,成功之后通過自封裝的execCommand方法實現將圖片輸出到文本框。該圖片其實就是一個<img>標簽,只不過src屬性是用字符串表示的圖片。所以我們要做的其實是在監聽器觸發之后,將文件上傳,獲得圖片的src,再把鏈接交給之后的execCommand方法。

由于筆者對Deferred并不是特別熟悉,所以還是采用更為通常的callback模式

觀察ajaxFileUpload的調用方式:

$.ajaxFileUpload({

    url : ...,

    secureurl : false,

    fileElementId : ...,

    dataType : "json",

    success : function(obj) {

     ...

    },

    error : function() {

     ...

    }

   });

有兩個必選的屬性,url和fileElementId,為了保持依賴的正確性,重寫ajaxFileUpload是不可取的。但是由于WY的控件是監聽器實現的,所以通過函數將參數傳過去是不現實的,所以我們需要自己對輸入框定義一些屬性來達到目的。

在fileInput中添加一些屬性

<input type="file" id="pictureInput" name="picture"

     data-role="magic-overlay" data-target="#pictureBtn"

     data-edit="insertImage" action="..." />

id 用作 fileElementId,name屬性也是必須的,主要是為了后臺取值指名,action是圖片需要提交到的url

在bootstrap-wysiwyg.js中定義一個函數名為uploadFileToServer,函數格式如下:

var uploadFileToServer = function(id, action, callback) {

  $.ajaxFileUpload({

   url : action,

   secureurl : false,

   fileElementId : id,

   dataType : 'json',

   success : function(obj) {

    if (obj.status) {

     callback(obj.imgsrc);

    } else

     options.fileUploadError("server-internal-exception",

       obj.message);

   },

   error : function() {

    options.fileUploadErroe("upload-failure", "");

   }

  });

將insertFiles方法作改寫如下:

insertFiles = function(files, id, action) {

   editor.focus();

   $.each(files, function(idx, fileInfo) {

    if (/^image\//.test(fileInfo.type)) {

     /*

      * $.when(readFileIntoDataUrl(fileInfo)).done(function(dataUrl) {

      * execCommand('insertimage', dataUrl); }).fail(function(e) {

      * options.fileUploadError("file-reader", e); });

      */

     uploadFileToServer(id, action, function(src) {

      execCommand('insertimage', src);

     });

    } else {

     options.fileUploadError("unsupported-file-type",

       fileInfo.type);

    }

   });

同時對監聽器做出一定的修改,以便拿到必要的屬性

toolbar.find('input[type=file][data-' + options.commandRole + ']')

    .change(

     function() {

       restoreSelection();

        if (this.type === 'file' && this.files

          && this.files.length > 0) {

         insertFiles(this.files, $(this).attr('id'),

           $(this).attr('action'));

        }

        saveSelection();

        this.value = '';

       });

主要是增加了兩個參數位置。

如此,改寫便完成了,注意,要確保正確執行,請在控件之前引用ajaxFileUpload.js.

以上就是本文的全部內容,希望對大家的學習有所幫助

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲欧美国产另类| 另类av一区二区| 欧美大片在线观看| 99天天综合性| 欧美视频在线观看 亚洲欧| 国产精品午夜视频| 在线中文字幕一区| 国产女人18毛片水18精品| 先锋影音一区二区三区| 亚洲午夜激情在线| 欧美系列亚洲系列| 亚洲在线第一页| 国产精品99久久99久久久二8 | 欧美在线观看视频一区二区| 欧美亚洲日本国产| 国产日韩综合一区二区性色av| 欧美在线free| 国产一区二区在线观看免费| 久久久国产精品一区| 99av国产精品欲麻豆| 国产精品一区二区视频| 欧美激情中文字幕一区二区| 欧美日韩在线播放一区| 国产精一区二区三区| 亚洲欧美日韩另类| 在线不卡中文字幕| 欧美天堂亚洲电影院在线播放| 亚洲一区日韩在线| 很黄很黄激情成人| 久久久精品欧美丰满| 91久久精品一区| 亚洲第一色在线| 亚洲巨乳在线| 在线免费观看欧美| 午夜在线成人av| 欧美色另类天堂2015| 一区二区电影免费在线观看| 欧美一区二区在线免费观看| 久久综合影音| 国产欧美亚洲一区| 亚洲一级片在线看| 国产一区二区观看| 欧美精品成人在线| 亚洲国产欧美一区二区三区同亚洲| 欧美一区日本一区韩国一区| 狂野欧美性猛交xxxx巴西| 国产日韩精品一区二区| 欧美亚洲在线播放| 国产精品视频yy9299一区| 午夜欧美大片免费观看| 亚洲女人天堂av| 欧美18av| 久久全球大尺度高清视频| 欧美一区二区视频在线| 香蕉久久夜色精品国产| 欧美精品在线视频| 一区二区三区欧美在线| 国产精品久久久久77777| 欧美一区免费| 日韩午夜剧场| 亚洲精品一区二区三区不| 国产日韩在线一区| 国产精品豆花视频| 欧美午夜宅男影院| 欧美乱大交xxxxx| 欧美日本韩国一区二区三区| 老色鬼久久亚洲一区二区| 久久久久久电影| 香蕉成人伊视频在线观看| 亚洲男女自偷自拍| 午夜精品久久久久久久久久久久久| 亚洲巨乳在线| 亚洲视频中文| 亚洲一区二区在线免费观看视频| 日韩亚洲欧美在线观看| 99国产精品久久久久久久成人热| 亚洲第一中文字幕| 亚洲国产精品一区制服丝袜 | 欧美日韩在线视频一区| 欧美日本网站| 国产欧美日韩一区二区三区在线 | 欧美一区2区三区4区公司二百| 亚洲香蕉伊综合在人在线视看| 99热这里只有精品8| 亚洲欧美日韩综合一区| 久久精品国产综合| 欧美日韩三级| 国外成人在线视频| 一级成人国产| 久久中文字幕一区| 欧美午夜久久| 亚洲黄色视屏| 亚洲欧美国产另类| 欧美极品一区| 禁断一区二区三区在线| 一本色道婷婷久久欧美| 久久伊伊香蕉| 国产视频在线一区二区| 亚洲激情综合| 久久视频一区| 国内精品久久久久久| 亚洲制服欧美中文字幕中文字幕| 久久精品一区二区国产| 国产精品美女久久久久久2018 | 正在播放欧美视频| 久久久激情视频| 国语自产精品视频在线看抢先版结局 | 巨乳诱惑日韩免费av| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 欧美成人精品激情在线观看| 国产免费成人av| 亚洲欧美一区在线| 国产精品美女一区二区| 在线亚洲欧美| 国产精品日韩| 久久精品二区亚洲w码| 国产日韩在线播放| 久久久久免费观看| 在线观看国产精品淫| 免费看成人av| 一区二区三区|亚洲午夜| 国产精品国产| 麻豆成人综合网| 亚洲一区二区三区高清| 国产情侣久久| 欧美精品日韩| 欧美在线免费一级片| 亚洲欧洲精品一区二区三区不卡 | 国产日韩欧美高清| 久热这里只精品99re8久| 最近中文字幕日韩精品 | 亚洲综合电影| 影音欧美亚洲| 国产午夜精品在线| 欧美日韩不卡| 亚洲欧美日韩在线综合| 激情视频亚洲| 国产精品普通话对白| 欧美成年人视频网站| 夜夜嗨av一区二区三区中文字幕 | 亚洲韩国青草视频| 国产精品久久久一本精品| 蜜臀99久久精品久久久久久软件| 亚洲一区二区精品在线观看| 伊人一区二区三区久久精品| 国产精品啊v在线| 欧美日韩成人一区| 欧美日本不卡| 欧美成人69| 麻豆精品网站| 欧美成人国产va精品日本一级| 亚洲专区一区| 亚洲欧美亚洲| 久久九九国产精品| 久久久久久有精品国产| 久色婷婷小香蕉久久| 欧美成人精品一区| 欧美日韩国产三级| 国产精品sm| 国产欧美日韩激情| …久久精品99久久香蕉国产| 亚洲国产第一页| 日韩一级在线| 亚洲欧美视频在线观看| 久久久免费观看视频| 欧美国产亚洲精品久久久8v| 欧美人与禽性xxxxx杂性| 国产精品久久午夜| 亚洲福利视频专区| 亚洲五月婷婷| 米奇777在线欧美播放| 欧美日韩一区精品| 在线观看成人网| 亚洲欧美日本另类| 浪潮色综合久久天堂| 欧美色区777第一页| 精品成人a区在线观看| 亚洲午夜精品一区二区三区他趣| 欧美在线观看www| 国产精品一区二区在线| 99精品视频免费观看| 另类图片综合电影| 国产一区二区三区日韩欧美| 日韩写真视频在线观看| 久久亚洲春色中文字幕| 国产精品国产三级欧美二区| 国产精品无码永久免费888| 亚洲精品中文字幕女同| 久久午夜激情| 亚洲第一色中文字幕| 久久久久久国产精品一区| 欧美视频在线观看 亚洲欧| 亚洲第一狼人社区| 久热成人在线视频| 一区二区三区在线视频观看| 亚洲欧美国产精品桃花| 国产精品资源| 欧美一区二区精品| 亚洲电影第1页| 欧美一区观看|