Ich fange an, ein altes Audio-Editor-Projekt anzupassen/zu verbessern. Ich kann Audiotracks auf meine Leinwand importieren VIA Drag & Drop von meinem Computer. Die Sache ist, dass ich auch Audiotracks verwenden möchte, die bereits auf dem Server gespeichert sind, indem ich einfach auf eine Liste verfügbarer Tracks klicke ... anstatt die <input type="file">
Tags zu verwenden. Wie kann ich die serverseitigen Dateien mit einem FileReader lesen? Ajax vielleicht? Danke im Voraus. Feed FileReader von Server-Seite Dateien
Dies ist der Code für die Datei Leser:
Player.prototype.loadFile = function(file, el) {
//console.log(file);
var reader = new FileReader,
fileTypes = ['audio/mpeg', 'audio/mp3', 'audio/wave', 'audio/wav'],
that = this;
if (fileTypes.indexOf(file.type) < 0) {
throw('Unsupported file format!');
}
reader.onloadend = function(e) {
if (e.target.readyState == FileReader.DONE) { // DONE == 2
$('.progress').children().width('100%');
var onsuccess = function(audioBuffer) {
$(el).trigger('Audiee:fileLoaded', [audioBuffer, file]);
},
onerror = function() {
// on error - show alert modal
var tpl = (_.template(AlertT))({
message: 'Error while loading the file ' + file.name + '.'
}),
$tpl = $(tpl);
$tpl.on('hide', function() { $tpl.remove() })
.modal(); // show the modal window
// hide the new track modal
$('#newTrackModal').modal('hide');
};
that.context.decodeAudioData(e.target.result, onsuccess, onerror);
}
};
// NOTE: Maybe move to different module...
reader.onprogress = function(e) {
if (e.lengthComputable) {
$progress = $('.progress', '#newTrackModal');
if ($progress.hasClass('hide'))
$progress.fadeIn('fast');
// show loading progress
var loaded = Math.floor(e.loaded/e.total * 100);
$progress.children().width(loaded + '%');
}
};
reader.readAsArrayBuffer(file);
};
return Player;