【问题标题】:Phonegap / Cordova - read file as text from temporary directoryPhonegap / Cordova - 从临时目录中读取文件作为文本
【发布时间】:2014-12-18 11:26:08
【问题描述】:

我正在使用 cordova 媒体插件来录制 .wav 音频样本。

其实我可以记录下来,但是我找不到获取已经创建的文件内容的方法。

如果我这样做:

// Record audio
//
function recordAudio() {
  var src = "myrecording.wav";
  var mediaRec = new Media(src, onSuccess, onError);

    // Record audio
    mediaRec.startRecord();

    // Stop recording after 10 sec
    var recTime = 0;
    var recInterval = setInterval(function() {

      recTime = recTime + 1;
      setAudioPosition(recTime + " sec");

      if (recTime >= 3) {
        clearInterval(recInterval);

        mediaRec.stopRecord();
         window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fs){
          fs.root.getFile("myrecording.wav", {create: true, exclusive: false},
            function(entry){
              console.log("console loggin file");
              console.log(entry);
        }, function(){
          alert("file create error");
        });
        }, null);
      }
    }, 1000);
  }

我在控制台中输入了这个:

{"isFile":true,"isDirectory":false,"name":"myrecording.wav","fullPath":"/myrecording.wav","filesystem":"<FileSystem: temporary>","nativeURL":"file:///Users/iamuser/Library/Developer/CoreSimulator/Devices/FC61A8C0-CF4B-4A1C-B22C-D8511B1B1707/data/Containers/Data/Application/716F442C-5076-4C69-9CA9-A1A8C2827898/tmp/myrecording.wav"}

但这不是文件内容,如何从documents://目录中以文本形式检索文件?

使用媒体插件将文件记录到documents://audio.wav路径中,这似乎是一个临时文件

【问题讨论】:

    标签: javascript android ios cordova audio


    【解决方案1】:

    媒体插件是它的描述意味着

    提供录制和播放音频文件的能力

    所以我想它不会给你原始数据。但是,由于您知道音频文件的 URI,请使用 File 插件从中获取数据。

    更新

    如果要上传文件,请参考here

    如果您希望将音频文件作为 Base64 编码字符串,请参阅 here

    那是一段很长的代码,里面有AngularJS,所以我把重要的部分作为一个总结在这里给你

    function OnFileEntry(file){
      var reader = new FileReader();
      reader.onloadend = function(evt) {
          var image = evt.target.result;
          var base64Data  =   image.replace(/^data:audio\/mpeg;base64,/, "");
          base64Data  +=  base64Data.replace('+', ' ');
      };
      reader.readAsDataURL(file);
    }
    
    function OnGetFile(fileEntry){
      fileEntry.file(OnFileEntry, fail);
    }
    
    function OnFileSystem(fileSystem){
      fileSystem.root.getFile(recordName, null, OnGetFile, fail);
    }
    
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, OnFileSystem, fail);
    

    您需要在此处更改记录名称以匹配您的 src 属性的值。

    这对你来说足够了吗,或者还有什么我可以帮助你的吗?

    【讨论】:

    • 是的,我的意图确实是使用文件插件...但是后面的 logci 是什么,我如何在 temp 文件夹中读取它?
    • 那么你想在这里实现什么?您是想将文件内容发送到 Internet、播放音频文件还是什么?使用 Media 插件存储后,它将存储在您手机的硬盘上,并且可以从那里以任何您想要的方式进行处理,对吧?
    • 我记录它然后我想获取内容......文件记录在文档中://audio.wav 作为我看到的 tmp 文件
    • 对不起,我没有关注你,朋友。那么现在的问题是如何将文件从文件系统读取到内存?如果是这样,我可以为您提供一个示例。
    • 请更好地检查问题标题,“如何获取文件内容 = 以文本形式读取文件”,并且该文件是录制的音频,是的,我需要一些提示/示例,我无法找到这里有什么:/谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多