使用Phonegap将图像转换为iOS上的Base64字符串

时间:2012-07-26 07:49:07

标签: iphone ios cordova base64

我正在iOS上开发一个应用程序。我正在为我的应用程序使用Phonegap和jQuery Mobile。目前,当用户单击图像或使用Phonegap从图库中选择图像并在本地保存URI时,我正在检索图像的URI。我需要通过在Base64字符串中转换它们来在服务器上提交这些图像。为了将它们转换为Base64,我使用的是Phonegap提供的示例。

<!DOCTYPE html>
<html>
  <head>
    <title>FileReader Example</title>
    <script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script>
    <script type="text/javascript" charset="utf-8">
    // Wait for Cordova to load
    //
    function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }
    // Cordova is ready
    //
    function onDeviceReady() {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
    }
    function gotFS(fileSystem) {
        fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
    }
    function gotFileEntry(fileEntry) {
        fileEntry.file(gotFile, fail);
    }
    function gotFile(file){
        readDataUrl(file);
        readAsText(file);
    }
    function readDataUrl(file) {
        var reader = new FileReader();
        reader.onloadend = function(evt) {
            console.log("Read as data URL");
            console.log(evt.target.result);
        };
        reader.readAsDataURL(file);
    }
    function readAsText(file) {
        var reader = new FileReader();
        reader.onloadend = function(evt) {
            console.log("Read as text");
            console.log(evt.target.result);
        };
        reader.readAsText(file);
    }
    function fail(evt) {
        console.log(evt.target.error.code);
    }
    </script>
  </head>
  <body>
    <h1>Example</h1>
    <p>Read File</p>
  </body>
</html>

在示例中,我将传递一个本地图像URI,以便在模拟器fileSystem.root.getFile("image.png", null, gotFileEntry, fail);上进行测试,而不是“readme.txt”。但是我收到以下错误:

  

错误回调错误:File2 = TypeError:'undefined'不是对象。

我也试过了图像的绝对路径但得到了同样的错误。我不明白什么可以出错?我错过了什么吗?我需要尽快破解。

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

我认为你的文件必须先创建,如果你确定是这种情况,你可以通过指定getFile方法的第二个参数来访问它:

fileSystem.root.getFile("image.png", {'create' : false}, gotFileEntry, fail);

{'create':false}会告诉phonegap不创建文件,这是我认为的默认情况。