如何将从blob url获取的音频数据保存到mysql db中的文件系统和路径中

Posted

技术标签:

【中文标题】如何将从blob url获取的音频数据保存到mysql db中的文件系统和路径中【英文标题】:How to save audio data getting from blob url into file system and path in mysql db 【发布时间】:2016-04-04 07:15:27 【问题描述】:

您好,我想将音频文件路径保存到数据库中,并将音频文件保存到我的上传文件夹中,这是我的代码:-

<a class="btn btn-large btn-danger" id="ahref" target="_blank" onclick="$('#audioLayerControl')[0].save($('#ahref')[0]);"><i class="icon-fire"></i> save</a>

当我单击此链接时,我录制的音频保存在下载文件夹中,我可以播放它,但我想将它保存在我的上传文件夹中,我得到像这样的 blob url blob:http%3A//localhost%3A8383/0dd9e04b-d6db-4c8c-94b5-51cfb619f725 这是它的脚本:-

this.save = function save(saveLink)
    
        var url = this.toWave().toBlobUrlAsync("application/octet-stream");

       document.getElementById("ahref").src=url;    
     var final=document.getElementById("ahref").download = new Date().toISOString() + '.wav';

    ;

谢谢,请帮帮我。

更新使用 Ajax 后

var blobUrl=url;    

    var xhr = new XMLHttpRequest;
xhr.responseType = 'blob';

xhr.onload = function() 
   var recoveredBlob = xhr.response;

   var reader = new FileReader;

   reader.onload = function() 
     var blobAsDataUrl = reader.result;
     window.location = blobAsDataUrl;
   ;

   reader.readAsDataURL(recoveredBlob);
;

//xhr.open('GET', blobUrl);
 xhr.open('POST', 'upload.php', true);

xhr.send(blobUrl);

上传.php

<?php

error_reporting(0);

   if( isset($HTTP_RAW_POST_DATA))
   

   echo  $cad = $HTTP_RAW_POST_DATA;

    

?>

输出:-blob:http%3A//localhost%3A8383/5155c610-dec6-4e60-8ef7-e14a56aa73d2

在浏览器中的网址是data:text/html;base64,YmxvYjpodHRwJTNBLy9sb2NhbGhvc3QlM0E4MzgzLzUxNTVjNjEwLWRlYzYtNGU2MC04ZWY3LWUxNGE1NmFhNzNkMg==

【问题讨论】:

您需要实际发送它。查看使用 AJAX 的文件上传教程。 @enhzflep 请看我更新的代码 【参考方案1】:

我会补充:

xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

就在 :

之前
xhr.open('POST', 'upload.php', true);

【讨论】:

以上是关于如何将从blob url获取的音频数据保存到mysql db中的文件系统和路径中的主要内容,如果未能解决你的问题,请参考以下文章

如何将 blob URL 转换为音频文件并将其保存到服务器

如何从 blob:url 获取原始图像数据?

如何在给定 blob url 的情况下将大型音频文件上传到 django 服务器?

如何转换 .mp3 或 .wav 等普通音频中的 BLOB 对象(音频)以更新到数据库

如何将从firebase存储上传的图像保存到firestore数据库中的currentUser

用blob下载音频并改名