2013-02-21 1 views
1

Я хочу передать адрес, созданный window.URL.createObjectURL(file), на dancer.js, но я получаю GET blob:http%3A//localhost/b847c5cd-aaa7-4ce0-8ff8-c13c6fc3505a.mp3 404 (Not Found).Передача createObjectURL

Мне удалось создать аудио-элемент с файлом, выбранным с помощью ввода файла, но dancer.js просто не находит файл ... какие-либо идеи? (Ниже, как я пройти ObjectURL)

$(document).ready(function(){ 
    $("#submit").click(function(){ 
     var file = document.getElementById("file").files[0]; 
     $('body').append('<audio id="audio" controls="controls"></audio>'); 
     $('#audio').append('<source src='+window.URL.createObjectURL(file)+' type=audio/mpeg />') 
     $('body').append('<a href='+window.URL.createObjectURL(file)+'>link</a>') 
     dancer(window.URL.createObjectURL(file)); 
    }) 
}) 
+1

Необходимо использовать 'createObjectURL' один раз и сохранить адрес в переменной вместо вызова его каждый раз, когда вы использовать его. Создание нового URL-адреса объекта для одного и того же файла каждый раз, когда вы его используете, - [создание большого количества лишних накладных расходов] (https://developer.mozilla.org/en-US/docs/DOM/window.URL.createObjectURL). –

+0

thx, но это не помогло :) – mjanisz1

ответ

4

Глядя на dancer.js readme это выглядит как метод load будет принимать либо ссылку на <audio> элемент или объект конфигурации, который определяет источник: {scr: varHoldingFileURL}. Так как вы уже создает <audio> элемент для файла, я бы просто так, что к танцовщице:

$(document).ready(function() { 
    var dancer = new Dancer(), 
     fileURL; 

    $("#submit").click(function(){ 
      var audioElement, 
       file = document.getElementById("file").files[0]; 

      fileURL = window.URL.createObjectURL(file); 

      // remove any preexisting instances of the audio tag 
      $('#audio').remove(); 

      // Revoke any previously used file URL so it doesn't 
      // take up memory anymore. 
      window.URL.revokeObjectURL(fileURL); 

      $('body').append('<audio id="audio" controls="controls"></audio>'); 
      $('#audio').append('<source src='+ fileURL +' type=audio/mpeg />') 
      $('body').append('<a href=' + fileURL +'>link</a>') 

      // get a reference to the audio element we created 
      audioElement = $('#audio')[0]; 

      dancer.load(audioElement); 
    }) 
});