2

我正在 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>

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

错误回调中的错误:File2 = TypeError:'undefined' is not an object。

我也尝试了图像的绝对路径,但得到了同样的错误。我不明白会出什么问题?我错过了什么吗?我需要尽快解决这个问题。

非常感谢任何帮助。

谢谢。

4

1 回答 1

0

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

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

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

于 2012-11-22T14:51:40.783 回答