最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angularjs客戶端實現(xiàn)壓縮圖片文件并上傳實例

 更新時間:2015年07月06日 08:43:43   投稿:junjie  
這篇文章主要介紹了angularjs客戶端實現(xiàn)壓縮圖片文件并上傳實例,本文直接給出代碼實例,需要的朋友可以參考下

主要是利用html5的canvas來進行圖片的壓縮,然后轉化為dataURL,再有dataURL轉化為Blob文件,Blob對象可以直接賦值給Formdata.

app.service('Util', function($q) {
  var dataURItoBlob = function(dataURI) {
    // convert base64/URLEncoded data component to raw binary data held in a string
    var byteString;
    if (dataURI.split(',')[0].indexOf('base64') >= 0)
      byteString = atob(dataURI.split(',')[1]);
    else
      byteString = unescape(dataURI.split(',')[1]);

    // separate out the mime component
    var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];

    // write the bytes of the string to a typed array
    var ia = new Uint8Array(byteString.length);
    for (var i = 0; i < byteString.length; i++) {
      ia[i] = byteString.charCodeAt(i);
    }

    return new Blob([ia], {
      type: mimeString
    });
  };

  var resizeFile = function(file) {
    var deferred = $q.defer();
    var img = document.createElement("img");
    try {
      var reader = new FileReader();
      reader.onload = function(e) {
        img.src = e.target.result;

        //resize the image using canvas
        var canvas = document.createElement("canvas");
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0);
        var MAX_WIDTH = 800;
        var MAX_HEIGHT = 800;
        var width = img.width;
        var height = img.height;
        if (width > height) {
          if (width > MAX_WIDTH) {
            height *= MAX_WIDTH / width;
            width = MAX_WIDTH;
          }
        } else {
          if (height > MAX_HEIGHT) {
            width *= MAX_HEIGHT / height;
            height = MAX_HEIGHT;
          }
        }
        canvas.width = width;
        canvas.height = height;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0, width, height);

        //change the dataUrl to blob data for uploading to server
        var dataURL = canvas.toDataURL('image/jpeg');
        var blob = dataURItoBlob(dataURL);

        deferred.resolve(blob);
      };
      reader.readAsDataURL(file);
    } catch (e) {
      deferred.resolve(e);
    }
    return deferred.promise;

  };
  return {
    resizeFile: resizeFile
  };

});


由于目前angualrjs暫不支持通過multiform data上傳文件,所以利用如下的代碼可以上傳formdata里的文件

app.controller('CompanyCtrl', function($http, Util) {

    Util.resizeFile(input.files[0]).then(function(blob_data) {
      var fd = new FormData();
      fd.append("imageFile", blob_data);
      $http.post('http://your.domain.com/upload', fd, {
        headers: {'Content-Type': undefined },
        transformRequest: angular.identity
      })
        .success(function(data) {
          $scope.model.company_pict = data[0];
        })
        .error(function() {
          console.log("uploaded error...")
        });
    }, function(err_reason) {
      console.log(err_reason);
    });


}


相關文章

  • AngularJS學習筆記之ng-options指令

    AngularJS學習筆記之ng-options指令

    ng-options是angular-1.3新出的一個指令,這篇文章就來介紹這個指令的用法.有需要的小伙伴可以參考下。
    2015-06-06
  • Angular.js中數(shù)組操作的方法教程

    Angular.js中數(shù)組操作的方法教程

    AngularJS是google在維護,其在國外已經(jīng)十分火熱,可是國內(nèi)的使用情況卻有不小的差距,參考文獻/網(wǎng)絡文章也很匱乏。下面這篇文章主要給大家介紹了關于Angular.js中數(shù)組操作的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • Angular4學習筆記之準備和環(huán)境搭建項目

    Angular4學習筆記之準備和環(huán)境搭建項目

    這篇文章主要介紹了Angular4學習筆記之準備和環(huán)境搭建項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Angular 作用域scope的具體使用

    Angular 作用域scope的具體使用

    本篇文章主要介紹了Angular 作用域的具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 淺談AngularJS中ng-class的使用方法

    淺談AngularJS中ng-class的使用方法

    下面小編就為大家?guī)硪黄獪\談AngularJS中ng-class的使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Angularjs自定義指令實現(xiàn)分頁插件(DEMO)

    Angularjs自定義指令實現(xiàn)分頁插件(DEMO)

    由于最近的一個項目使用的是angularjs1.0的版本,涉及到分頁查詢數(shù)據(jù)的功能,后來自己就用自定義指令實現(xiàn)了該功能,下面小編把實例demo分享到腳本之家平臺,需要的朋友參考下
    2017-09-09
  • Angularjs在360兼容模式下取數(shù)據(jù)緩存問題的解決辦法

    Angularjs在360兼容模式下取數(shù)據(jù)緩存問題的解決辦法

    這篇文章主要為大家詳細介紹了Angularjs在360兼容模式下取數(shù)據(jù)緩存問題的解決辦法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Angular設計模式hierarchical?injector實現(xiàn)代碼復用模塊化

    Angular設計模式hierarchical?injector實現(xiàn)代碼復用模塊化

    這篇文章主要為大家介紹了Angular設計模式hierarchical?injector實現(xiàn)代碼復用模塊化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • angular5 httpclient的示例實戰(zhàn)

    angular5 httpclient的示例實戰(zhàn)

    本篇文章主要介紹了angular5 httpclient的示例實戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • AngularJS動態(tài)綁定ng-options的ng-model實例代碼

    AngularJS動態(tài)綁定ng-options的ng-model實例代碼

    本篇文章主要介紹了AngularJS動態(tài)綁定ng-options的ng-model實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

新源县| 萨嘎县| 浮梁县| 夏河县| 仙游县| 桐梓县| 吴堡县| 航空| 长白| 耿马| 宿州市| 蒙城县| 南昌县| 平乡县| 云安县| 桓台县| 都安| 辉县市| 万全县| 双牌县| 巩留县| 资溪县| 河北省| 茌平县| 格尔木市| 夏津县| 蒙自县| 永和县| 福清市| 长沙县| 九寨沟县| 泸州市| 古蔺县| 乐亭县| 文登市| 湖北省| 柘城县| 诸城市| 崇义县| 宝丰县| 日照市|