我正在创建一个应用程序,当我按下保存按钮时,它会将给定的blob audion数据存储到firefox os中的SD卡中,我在这里呈现代码。
var audioURL = window.URL.createObjectURL(e.data);
audio.src = audioURL;
audio.type="video/ogg";
deleteButton.onclick = function(e) {
evtTgt = e.target;
evtTgt.parentNode.parentNode.removeChild(evtTgt.parentNode);
}
saveButton.onclick = function(e) {
evtTgt = e.target;
var sdcard = navigator.getDeviceStorage("sdcard");
var file = new Blob([audioURL], {type: "video/ogg"});
var request = sdcard.addNamed(file, "my-file.ogg");
request.onsuccess = function () {
var name = this.result;
console.log('File "' + name + '" successfully wrote on the sdcard storage area');
}
这里我已经编写了代码,但它没有工作。所以任何人都可以帮忙吗?
答案 0 :(得分:0)
我假设您从传递给MediaRecorder
事件处理程序的"dataavailable"
事件对象获取数据,如此处列出的示例所示:https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/ondataavailable
在这种情况下,e.data
已经是Blob,您只需将其传递给addNamed
函数,如下所示:https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage/addNamed
var audioData = e.data,
audioURL = window.URL.createObjectURL(e.data);
audio.src = audioURL;
audio.type ="video/ogg";
deleteButton.onclick = function(e) {
evtTgt = e.target;
evtTgt.parentNode.parentNode.removeChild(evtTgt.parentNode);
}
saveButton.onclick = function(e) {
evtTgt = e.target;
var sdcard = navigator.getDeviceStorage("sdcard");
var request = sdcard.addNamed(audioData, "my-file.ogg");
request.onsuccess = function () {
var name = this.result;
console.log('File "' + name + '" successfully wrote on the sdcard storage area');
}
}
但是,您应该仔细检查您的代码,因为它似乎有不匹配的括号。