После просмотра эпизода загрузки файла из eventedmind.com, оказывается способ сделать это состоит в использовании FileReader прочитать блоб как ArrayBuffer, который затем преобразуется в Uint8Array хранить в Монго:
var BinaryFileReader = {
read: function(file, callback){
var reader = new FileReader;
var fileInfo = {
name: file.name,
type: file.type,
size: file.size,
file: null
}
reader.onload = function(){
fileInfo.file = new Uint8Array(reader.result);
callback(null, fileInfo);
}
reader.onerror = function(){
callback(reader.error);
}
reader.readAsArrayBuffer(file);
}
}
exportWAV обратного вызова затем
recorder.exportWAV(function(blob) {
BinaryFileReader.read(blob, function(err, fileInfo){
Recordings.insert(fileInfo)
});
});
Тогда я могу показать одну из моих записей по:
Deps.autorun(function(){
var rec = Recordings.findOne();
if (rec){
var au = document.createElement('audio');
au.controls = true;
var blob = new Blob([rec.file],{type: rec.type});
au.src = URL.createObjectURL(blob);
document.getElementById("recordingslist").appendChild(au);
}
})
я не знаю, если предыдущий фрагмент кода работает в других браузерах, но это может:
var base64Data = btoa(String.fromCharCode.apply(null, rec.file))
var au = document.createElement('audio');
au.controls = true;
au.src = "data:"+rec.type+";base64,"+base64Data
я могу записывать, воспроизведение и загрузить файл WAV, который я думаю, что комментарий имеет в виду. Я также видел примеры того, как это сделать в php в этом сообщении http://stackoverflow.com/questions/13333378/how-can-javascript-upload-a-blob, и мне просто сложно перевести его на метеорит , Я попытался использовать collectionapi для перевода решения, но не смог. Я также видел binaryjs, но для него, похоже, требуется объект сервера, который я не знаю, где его получить. – user2191332