PhoneGap FileReader/readAsDataURL 不触发回调

2024-01-10

我正在使用 PhoneGap Build 构建 iOS v7.1+ 应用程序并使用weinre http://people.apache.org/~pmuellr/weinre-docs/latest/进行调试。我正在使用媒体捕获插件和文件 API 来捕获视频,试图获取其 Base64 表示形式。我可以打开录像机、拍摄视频并返回文件路径。然后我用resolveLocalFileSystemURL()获取一个文件对象readAsDataURL()需要。问题是FileReader从来没有打电话给onloadend打回来。

我一整天都在闲逛。推杆console.log()我能想到的无处不在。我检查了一下以确保 iOS 版本支持 http://www.caniuse.com/#feat=filereader。每个变量都是我所期望的,但回调根本没有被调用。我还尝试设置所有其他回调,但它们都没有被调用。我尝试过更换readAsDataURL() with readAsText()但我还是得到了布基斯。我尝试等待最多五分钟,因为我认为异步调用可能需要一点时间,但仍然没有任何结果。

下面是我的代码。下面是控制台输出。

var elements = new Object();
elements["video"] = $("#window_incident_create > .video > source")[0];

navigator.device.capture.captureVideo(
    function(files) {
        for ( var i in files ) {
            var file = files[i];

            var name = file.name;
            var path = file.fullPath;
            if ( path.indexOf("/private") === 0 )
                path = "file://" + path.substr(8);
            else
                path = "file://" + path;
            var type = file.type;
            var lastModifiedDate = file.lastModifiedDate;
            var size = file.size;

            var reader = new FileReader();
            reader.onloadend = function(event) {
                console.log(3);
                elements["video"].type = type;
                elements["video"].src = "data:" + type + ";base64," + event.target.result;
                console.log(4);
            };

            window.resolveLocalFileSystemURL(
                path,
                function(entry) {
                    console.log(1, entry.nativeURL);
                    reader.readAsDataURL(entry);
                    console.log(2);
                },
                function(error) {
                    console.log("0-0", error);
                }
            );
        }
    },
    function(error) {
        console.log("0-1", error);
    },
    {
        limit:  1
    }
);

1“文件:///var/mobile/Applications/AB239984-FB9F-43C0-B699-3596AC8A43A8/tmp/capture/capturedvideo.MOV”

2


稍微重新组织一下你的代码。放在reader初始化和onloadend里面的回调resolveLocalFileSystemURL成功回调。

像这样的东西:

var elements = new Object();
elements["video"] = $("#window_incident_create > .video > source")[0];

navigator.device.capture.captureVideo(
    function(files) {
        for ( var i in files ) {
            var file = files[i];

            var name = file.name;
            var path = file.fullPath;
            if ( path.indexOf("/private") === 0 )
                path = "file://" + path.substr(8);
            else
                path = "file://" + path;
            var type = file.type;
            var lastModifiedDate = file.lastModifiedDate;
            var size = file.size;

            window.resolveLocalFileSystemURL(
                path,
                function(entry) {
                    console.log(1, entry.nativeURL);
                    var reader = new FileReader();
                    reader.onloadend = function(event) {
                        console.log(3);
                        elements["video"].type = type;
                        elements["video"].src = "data:" + type + ";base64," + event.target.result;
                        console.log(4);
                    };
                    reader.readAsDataURL(entry);
                    console.log(2);
                },
                function(error) {
                    console.log("0-0", error);
                }
            );
        }
    },
    function(error) {
        console.log("0-1", error);
    },
    {
        limit:  1
    }
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PhoneGap FileReader/readAsDataURL 不触发回调 的相关文章

随机推荐

  • Achartengine - Android 中条形图的不同条形颜色

    我在 android 中使用创建了一张图表图表引擎 http achartengine org图书馆 我想用不同的颜色显示每个栏 我能做什么 请给我一些建议 提前致谢 只需查看给出的答案here https stackoverflow co
  • 在 django 中使用 Crispy_forms 时,“FormHelper”对象没有属性“append”

    我是 Django 的新手 我正在尝试使用脆脆的表单来设计表单的样式 我的应用程序中有一个表单 它恰好是一个模型表单 我已经遵循了此处所说的内容https stackoverflow com a 13201588 1076075 https
  • Laravel 5.x 数据库触发器和可能的最佳实践

    这篇文章的目的是提供信息并提出问题 大家好 我正在开发一个可以充分利用触发器的大型系统 我们目前正在使用 phpmyadmin 在 Laravel 5 2 和 php 7 上运行服务器端 在 Laravel 中 并没有太多关于如何通过迁移使
  • 概括 python 脚本以在目录中的所有文件上运行

    我有以下 python 脚本 with open ein csv r as istr with open aus csv w as ostr for line in istr line line rstrip n 1 print line
  • 这是一个指针吗? (如果是的话,它是如何初始化的?)

    有一个头文件 esUtil h 其中定义了一个名为 ESContext 的结构 其成员之一是 userData userData 是一个指向 void 的指针 使用它的程序主体如下 include esUtil h typedef stru
  • Facebook Connect for iOS:dialogDidComplete 响应区分

    我想知道如何区分用户在内联后流 FBDialog 中点击 提交 或 跳过 有谁知道要测试什么吗 我在 iOS 4 2 环境中使用最新的 iOS Facebook Connect Called when a UIServer Dialog s
  • 再次重新处理/读取Kafka记录/消息 - Consumer Group Offset Reset的目的是什么?

    我的 kafka 主题总共有 10 条记录 消息 2 个分区 每个分区有 5 条消息 我的消费者组有 2 个消费者 每个消费者已经分别从其分配的分区读取了 5 条消息 现在 我想从开始 开始 偏移量 0 重新处理 读取我的主题中的消息 我停
  • 带注释的收藏袋

    我正在观看一个由 制作的精彩视频伯特 贝克威斯 http www infoq com presentations GORM Performance http www infoq com presentations GORM Performa
  • 无法检索 Eclipse 插件中选定的 java 文件名/路径

    我正在开发一个插件 需要 检索 java 文件的路径 文件名 我编写的代码成功检索了 xml 或清单文件的文件名 路径 但无法检索包中 Java 文件的路径 我使用的代码是 if IStructuredSelection 的选择实例 Obj
  • 如何在Vue JS中动态渲染组件?

    我正在制作一个表单生成器 它使用其中的组件作为输入字段 按钮等 我希望能够根据我传递给它的选项来生成表单 但我无法让它渲染组件 我尝试返回纯 HTML 但这不会渲染组件 我从 Home vue 模板中调用表单生成器 我希望表单具有如下所示的
  • 线程池并行处理消息,但保留对话中的顺序

    我需要并行处理消息 但保留具有相同会话 ID 的消息的处理顺序 Example 让我们像这样定义一个消息 class Message Message long id long conversationId String someData 假
  • iOS 7.1 删除超级视图崩溃

    我的应用程序没有发生任何崩溃 直到iOS 7 1出来 现在在任何removeFromSuperview方法 崩溃 例如 我有视图控制器 当我想删除视图控制器时 我删除它的所有子视图 然后从堆栈中删除 堆栈 我在其中存储视图控制器 用于加载新
  • 如何在 AngularJS 中交换 div 元素的顺序?

    如何使用 Angular 的数据绑定更改包含文本框和下拉列表的 div 元素的顺序 div 的顺序应相应更改用户登录意味着如果用户类型为 A 则 div A 应位于顶部 如果用户类型为 B 则 div B 应位于顶部 其他 div 元素将位
  • 无法使用 Firebase CLI 登录

    当我尝试使用 CLI 登录 Firebase 时遇到问题 我安装了firebase tools using npm g install firebase tools具有管理员权限 我执行的步骤是 从 Windows 10 Professio
  • 删除第一页的页眉和页脚

    class MyDocTemplate BaseDocTemplate def init self filename kw self allowSplitting 0 apply BaseDocTemplate init self file
  • 如何借助 FFMPEG 和 PHP 代码连接两个 mp4 视频? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有人可以帮助我使用 FFMPEG 的 php 代码来连接两个 mp4 视频并将连接的文件作为 mp4 存储在服务器中的任何文件夹中吗
  • jQuery 仅序列化 div 中的元素

    我想得到同样的效果jQuery serialize 但我只想返回给定的子元素div 结果示例 single Single2 multiple Multiple radio radio1 没问题 只需使用以下内容即可 这将与序列化表单完全相同
  • js中能获取之前的历史状态对象吗?

    当我点击后退或前进按钮并且 popstate 事件触发时 我可以获得前一个状态的状态对象吗 因为不是 e state 提供的状态对象 而是我刚刚后退 转发的状态对象 或者 我可以检测按下的是后退按钮还是前进按钮 我需要这个 因为我有多个子系
  • 匹配点集的算法

    我有两组点A and B 而点可以是 2D 或 3D 两套尺寸相同n 相当低 5 20 我想知道这些集合的一致性如何 也就是说 理想情况下 我会找到点之间的配对 使得所有欧几里得对距离的总和d A B 是最小的 所以 d A B sum i
  • PhoneGap FileReader/readAsDataURL 不触发回调

    我正在使用 PhoneGap Build 构建 iOS v7 1 应用程序并使用weinre http people apache org pmuellr weinre docs latest 进行调试 我正在使用媒体捕获插件和文件 API