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

Posted

技术标签:

【中文标题】在 iOS 上使用 Phonegap 将图像转换为 Base64 字符串【英文标题】:Convert an image to a Base64 string on iOS using Phonegap 【发布时间】:2012-07-26 07:49:06 【问题描述】:

我正在 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,而不是“readme.txt”,以便在模拟器 fileSystem.root.getFile("image.png", null, gotFileEntry, fail); 上进行测试。但是我收到以下错误:

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

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

非常感谢任何帮助。

谢谢。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于在 iOS 上使用 Phonegap 将图像转换为 Base64 字符串的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap 无法将 HTML5 移动应用程序转换为 IOS

通过 PhoneGap 将 html javascript 转换为 iOS 应用程序

将 Ruby on Rails 应用程序转换为 Phonegap iOS 应用程序的步骤是啥?

如何替换 iOS 7 的 phonegap 聚光灯图标?

使用 phonegap 在 IOS 的图库中查看使用 FileWriter 写入文件系统的图像文件

是否可以将 HTML 文件添加为 Phonegap iOS 应用程序的启动画面