2015-06-18 55 views
0

使用http://plugins.cordova.io/#/package/org.apache.cordova.file和插件安裝= org.apache.cordova.file 1.3.3「文件」科爾多瓦文件的插件,沒有任何回調都燒成

我拍攝一張照片,我試圖將其轉換爲base64。圖片位置返回(以下VAR路徑)是 「資產庫://asset/asset.JPG ID = ECB406E6-E361-46AA-9282-FEEBDAC170DF & EXT = JPG」

首先,從它看起來的文件像我所需要的是:

// Convert to image URL base64 
    var fileReader = new FileReader(); 
    fileReader.onloadend = function (data) { 
     console.log(data.target.result); 
    }; 

    fileReader.readAsDataURL(path); 

代碼執行但回調從未解僱!然後,我挖掘並添加了一堆其他fileReader選項......其中的實際零執行。在iOS和Android上同樣的行爲

 fileReader.onload = function (data) { 
      console.log("onload", data); 
     }; 


     fileReader.onerror = function (data) { 
      console.log("error!", data); 
     }; 


     fileReader.onloadstart = function (data) { 
      console.log("onloadstart", data); 
     }; 

我沒有收到任何JS錯誤,但我也沒有得到任何控制檯輸出。

1)爲什麼Cordova File FileReader()回調不會觸發?

更新

我試着用ngCordova的文件插件以及,http://ngcordova.com/docs/plugins/file/

$cordovaFile.readAsDataURL('assets-library://asset/', 'asset.JPG?id=ECB406E6-E361-46AA-9282-FEEBDAC170DF&ext=JPG') 
      .then(function (success) { 
       // success 
       console.log("ng success", success); 
      }, function (error) { 
       // error 
       console.log("ng error", error); 
      }); 

有了,我收到以下錯誤:

Error in Success callbackId: File1336724899 : TypeError: undefined is not a function (evaluating 'e.getFile')

+0

我猜你需要使用一個普通的URL,而不是資產庫的URL。要確認我可能會嘗試使用網站上的圖像,看看它是否會加載... –

+0

感謝@Mike,1)爲什麼我不會得到一個錯誤呢? 2)如果我管道img的ng-src的路徑或它的工作完全正常3)我確實需要訪問該圖像發送雖然,有什麼建議如何? –

+0

我不知道缺少錯誤 - 也許它解決了URL的問題。無論如何,如果您使用的是科爾多瓦照片插件,您可以使用FILE_URI選項來獲取「正常」文件網址。 –

回答

0

我最近在同一問題moveFile函數,在我的情況下,我犯了一個錯誤。在函數moveFile中,我正在使用我的服務中的moveFrom參數發送帶有文件名的目錄。正確的方法是隻設置目錄。

function moveFile(moveFrom, currentFileName, moveTo, newFileName) { 
    return $cordovaFile.moveFile(moveFrom, currentFileName, cordova.file.dataDirectory + moveTo, newFileName); 
} 

Cordova文件插件可能會返回無效的目錄錯誤。

見NG-科爾多瓦庫完整的問題

https://github.com/driftyco/ng-cordova/issues/1160

1

我已經通過無數SO帖子和論壇上關於此行爲了。 Error in Success callbackId:問題發生在我正在構建的應用程序的iOS版本上,但不是Android。經進一步調查(在ngCordova源代碼本身記錄行爲),我發現assets-library://asset/轉換科爾多瓦的,這是在W3文件系統API規範中的一個FileEntry對象,從設計了NATIVE_URIFileEntry Interface

使用FILE_URI(這在我的情況,我用的是科爾多瓦相機插件,是很容易配置),我注意到,我現在是使用DirectoryEntry對象,並提供了getFile功能我一直在尋找:DirectoryEntry Interface

TL; DR:嘗試使用FILE_URI(file://)代替NATIVE_URI('assets-library:// asset /'for iOS)得到DirectoryEntry提供getFile函數的對象。

相關問題