【发布时间】:2017-11-01 22:26:11
【问题描述】:
我有一个 HTML5 录音机,它产生一个音频 blob(Matt Diamond 的 recorder.js)并对我的 PHP 文件执行 jquery ajax 调用。
function audioUpload() {
recorder && recorder.exportWAV(function(blob) {
//first look at the blob
console.log(blob);
var fd = new FormData();
fd.append('audioBlob', blob);
var audioBlob = fd.get('audioBlob');
//second look at the blob
console.log(audioBlob);
$.ajax({
method: "POST",
data: fd,
contentType: false,
processData: false,
url: "audioSend.php",
}).done(function(data) {
console.log(data);
})
});
这里有两个 console.log 函数可以报告 blob:
首先,控制台读取为 blob。 1 在代码的另一部分中,我使用它创建了一个对象 URL,并且可以使用 HTML5 音频标签播放音频,所以它正在工作。
在第二个中,控制台将其作为文件读取。 2 我可以理解这一点,因为按照定义,blob 是类似文件的对象。不过,我不确定为什么它不像第一个实例那样被报告为 blob。
formData 对象被发布到 audioSend.php 中,我在其中获取值并将其插入到我的数据库中。
$audioBlob = $_FILES['audioBlob'];
$results = mysqli_query($connection, "INSERT INTO audioLog (audio) VALUES ('$audioBlob')");
echo ($audioBlob);
尝试将 blob 值插入我的数据库会引发“数组到字符串转换”错误,并且回显 $audioBlob 确认它被读取为数组。结果,我的 MYSQL DB Blob 列中显示的值只有几个字节,而不是我想要的更大的音频 blob 对象。
为什么将 blob 读取为数组,如何将 REAL blob 值插入到我的数据库中?
【问题讨论】:
-
仅供参考 - 当您将来遇到此类问题时,
print_r()是您的朋友。 -
print_r()永远不是你的朋友,但var_dump()是。 :P -
@Sammitch var_dump() 也确认了 $audioBlob 的值是一个数组,正如我在 echo() 中看到的那样。
标签: php ajax audio mysqli blob