亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解angularJS+Ionic移動端圖片上傳的解決辦法

 更新時間:2017年09月13日 09:00:07   作者:雷厲風行L  
本篇文章主要介紹了詳解angularJS+Ionic移動端圖片上傳的解決辦法 ,具有一定的參考價值,有需要的可以了解一下

前端開發(fā)中經(jīng)常會碰到圖片上傳的問題,網(wǎng)上的解決辦法很多,可是有些圖片上傳的插件會有一些附屬的插件,因此因為一個圖片上傳的問題可能額需要引入其他插件到項目中,久而久之項目會不倫不類,有時候插件之間也會有一些沖突,所以我們可以自己寫一個圖片上傳的方法。

今天的demo是幫朋友做的一個移動端微信公眾號項目,項目架構采用angular+ionic,因為對dom的操作jQuery會方便很多,但是jQuery比較厚重,所以最后選擇用輕量級的zepto來對項目dom進行操作。

項目中有一個需求是上傳個人作品,實現(xiàn)功能需要H5新對象 FormData對象、XMLHttpRequest對象、FileReader對象。只需要這三個對象即可,話不多說上代碼。

dom結構:

js結構:

function1:

$scope.imgList = [];
$scope.setUploader = function () {
  var files = document.getElementById('photo');
  files.click();
  $(files).unbind().on('change',function (e) {
    var file = e.target.value;
    if (!/.(jpg|jpeg|png|GIF|JPG|png)$/.test(file)) {
      common.toast('圖片類型必須是jpeg,jpg,png中的一種');
      return false;
    };
    fsubmit();
    readAsBinaryString();
  });
};

function2:

function fsubmit() {
  var itemImg = {};
  var form=document.getElementById("form1");
  console.log('form',form)
  var formData=new FormData(form);
  formData.append('wxdesigner_sid',$.fn.cookie('wxdesigner_sid'));
  formData.append('id',$scope.masterInfo.id);
  formData.append('pc','1');
  var oReq = new XMLHttpRequest();
  oReq.onreadystatechange=function(){
    if(oReq.readyState==4){
      if(oReq.status==200){
        var json=JSON.parse(oReq.responseText);
        console.log(json)
        if(json.Success) {
          itemImg = json.Data;
          $scope.imgList=itemImg;
          console.log($scope.imgList)
          $scope.$apply();
          itemImg = {};
        }
      }
    }
  };
  console.log(oReq)
  console.log(formData)
  oReq.open("POST", common.api+"Wxdesigner/Designer/uploadworks");
  oReq.send(formData);
  return false;
};

//判斷瀏覽器是否支持FileReader接口
if(typeof FileReader == 'undefined'){
  //使選擇控件不可操作
  file.setAttribute("disabled","disabled");
}

function3:

function readAsBinaryString(){
  var file = document.getElementById('photo').files[0];
  console.log(file)
  var reader = new FileReader();
  //將文件以二進制形式讀入頁面
  reader.readAsDataURL(file);
  reader.onload=function(f){
    $scope.masterInfo.thumblist.push(f.currentTarget.result)
    console.log($scope.masterInfo)
    $scope.$apply()
  }
}

整個圖片上傳的dom層很簡單,一個form表單加上一個觸發(fā)表單的函數(shù)(function1)。在function1中獲取到<input type="file">的點擊事件,在選擇圖片的時候會做個判斷,如果超出支持的圖片類型圍的時候做個提醒。

然后在后面調用function2和function3。

在function2中獲取form表單對象,然后創(chuàng)建一個FormData對象,將獲取到的form表單傳入FormData,然后append一些上傳圖片的參數(shù)。再創(chuàng)建一個new XMLHttpRequest對象,然后open發(fā)送XHR請求接口,send(formData)傳遞參數(shù)給接口。

到這個時候接口發(fā)送成功。

 這里的四個參數(shù)是formData中的四個參數(shù)

接口相應成功。

到這里有問題,圖片上傳成功寫入數(shù)據(jù)庫了,可是這時候需要在本地展示給用戶看但是網(wǎng)頁又不能直接訪問設備本地的圖片,因此我們需要FIleReader對象來對上傳的圖片文件讀取為DataURL來展示在本地。

首先New 一個FileReader對象,然后將獲取到的input file對象傳入FileReader的 readAsDataURL()方法,此方法是將文件讀取為DataURL的。

然后調用FileReader的onload方法,此方法的result會有轉換之后的url,因此我們可以獲取到此url,實際上是經(jīng)過base64編碼的。然后push到圖片列表的最后

到此解決了問題,前端展示了本地的圖片并且圖片也寫入了數(shù)據(jù)庫,當頁面再次刷新的時候拿到的是數(shù)據(jù)庫中的數(shù)據(jù)

當然這里只是一個方法,移動端圖片上傳的插件比比皆是,甚至各種拖拽上傳的圖片上傳插件也很多,此處適合項目中不用引入插件的圖片上傳的簡單功能。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Angularjs 基礎入門

    Angularjs 基礎入門

    這篇文章主要介紹了Angularjs 基礎入門的一些知識,需要的朋友可以參考下
    2014-12-12
  • AngularJS Controller作用域

    AngularJS Controller作用域

    這篇文章主要為大家詳細介紹了AngularJS Controller的作用域,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Angular表格神器ui-grid應用詳解

    Angular表格神器ui-grid應用詳解

    這篇文章主要為大家詳細介紹了Angular表格神器ui-grid應用的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 深入理解Angular.JS中的Scope繼承

    深入理解Angular.JS中的Scope繼承

    這篇文章主要給大家深入的介紹了關于Angular.JS中Scope繼承的相關資料,Angular。JS中scope之間的繼承關系使用JavaScript的原型繼承方式實現(xiàn),文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • AngularJS實現(xiàn)Input格式化的方法

    AngularJS實現(xiàn)Input格式化的方法

    這篇文章主要介紹了AngularJS實現(xiàn)Input格式化的方法,結合實例形式分析了AngularJS實現(xiàn)Input格式化的操作步驟與相關注意事項,需要的朋友可以參考下
    2016-11-11
  • AngularJS入門教程之過濾器用法示例

    AngularJS入門教程之過濾器用法示例

    這篇文章主要介紹了AngularJS過濾器用法,結合實例形式簡單的分析了AngularJS過濾器的功能及基本用法,并舉例說明了自定義過濾器的實現(xiàn)技巧,需要的朋友可以參考下
    2016-11-11
  • Angular實現(xiàn)的內(nèi)置過濾器orderBy排序與模糊查詢功能示例

    Angular實現(xiàn)的內(nèi)置過濾器orderBy排序與模糊查詢功能示例

    這篇文章主要介紹了Angular實現(xiàn)的內(nèi)置過濾器orderBy排序與模糊查詢功能,涉及AngularJS過濾器、排序及字符串遍歷、查詢等相關操作技巧,需要的朋友可以參考下
    2017-12-12
  • 利用Angular2 + Ionic3開發(fā)IOS應用實例教程

    利用Angular2 + Ionic3開發(fā)IOS應用實例教程

    這篇文章主要給大家介紹了關于利用Angular2 + Ionic3開發(fā)IOS應用的相關資料,文中通過示例代碼和圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • 詳解Ubuntu安裝angular-cli遇到的坑

    詳解Ubuntu安裝angular-cli遇到的坑

    這篇文章主要介紹了詳解Ubuntu安裝angular-cli遇到的坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Angluar+zorro實現(xiàn)無限級菜單

    Angluar+zorro實現(xiàn)無限級菜單

    這篇文章主要為大家詳細介紹了Angluar+zorro實現(xiàn)無限級菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論