2017-01-28 42 views
0

嗨我目前正在開發與firebase離子應用程序。 我正在嘗試上傳多個文件並調整大小。canvas.toDataURL()返回相同的數據URL

當我調用調整大小的方法輸入圖像不同,但一旦我完成我的上傳,它最終上傳重複圖像(數組的最後一個圖像)結束。

I console.log每次調整大小時都會發現dataURL,並發現DataURL總是相同。

以下代碼是上傳多個文件。

multipleUpload: function(key, folder, files, targetWidth) { 
    var q = $q.defer(); 
    var ct = Date.now(); 
    var urls = []; 

    var recursive = function (n, args) { 
     var arg = args[n]; 
     ImageService.resize(arg.file, targetWidth) 
     .then(function(file) { 
     upload(ct + '' + n + key, folder + '/' + key, file, CONFIG.MESSAGE.FILE_UPLOAD + (n + 1) + '번 파일') 
     .then(function(url) { 
      urls.push(url); 
      if (++n < args.length) { 
      recursive(n, args); 
      } else { 
      q.resolve(urls); 
      } 
     }), function(error) { 
      q.reject(error); 
     }; 
     }) 
    } 
    recursive(0, files); 

    return q.promise; 
    }, 

下面的代碼大小的方法

resize: function(file, targetWidth) { 
    var q = $q.defer(); 
    // Resizing Image 
    var img = new Image(); 
    img.setAttribute('crossOrigin', 'anonymous'); 
    img.onload = function(){ 
     var canvas = document.createElement("canvas"), 
     ctx = canvas.getContext("2d"); 
     canvas.width = targetWidth; 
     canvas.height = canvas.width * (img.height/img.width); 
     ctx.drawImage(this, 0, 0, canvas.width, canvas.height); 
     // Data URL to BLOB 
     var dataURL = canvas.toDataURL(); 
     console.log(dataURL); // Returns same dataURL all the time. 
     dataURLtoBlob(dataURL, Date.now()) 
     .then(function(blob) { 
     q.resolve(blob); 
     }); 
    }; 
    img.src = file; 
    return q.promise; 
    }, 

回答

0

首先,我發現了一個奇怪的東西,它在iOS但是Android的罰款。

我開始挖掘插件選項並禁用allow-edit然後它工作正常。我相信這是來自插件的問題。