如何将从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 的情况下将大型音频文件上传到 django 服务器?
如何转换 .mp3 或 .wav 等普通音频中的 BLOB 对象(音频)以更新到数据库