Próbuję użyć jquery ajax do pobrania binarnego pliku audio.Używanie jquery ajax do pobrania pliku binarnego
Normalnie ja po prostu wydać polecenie tak:
windows.location.href = 'http://marksdomain(dot)com/audioFile.wav' ;
Jednak niedawno nasz serwer został zbyt długie oczekiwanie na odpowiedź, a ja się paskudny komunikat limit czasu bramy.
Zasugerowano, że zamiast tego używam jquery-ajax, co ma sens, ponieważ miałbym większą kontrolę nad czasem oczekiwania.
Oto kod mam grał do tej pory:
$.ajax(
{ url: 'http://marksdomain(dot)com/audioFile.wav'
, timeout: 999999
, dataType: 'binary'
, processData: false // this one does not seem to do anything ?
, success: function(result) {
console.log(result.length);
}
, error: function(result, errStatus, errorMessage){
console.log(errStatus + ' -- ' + errorMessage);
}
Kiedy pominąć „typ danych”, to plik binarny jest wpadające przez około trzy razy większy niż jest w rzeczywistości znajduje się na serwerze. Jednak, kiedy dokonać dataType równą „binarny”, ajax zgłasza błąd:
"No conversion from text to binary"
z niektórych wcześniejszych postów, to brzmi jakby jquery-ajax nie obsługuje plików binarnych w ten sposób.
Odkryłem Delivery.js, który faktycznie działa całkiem dobrze dla tego, co próbuję, ale wolałbym nie używać rozwiązania węzła, jeśli to możliwe.
Wszelkie sugestie?
problemem jest to, że rozwiązanie to nadal jest problem limitu czasu, podobnie jak przy użyciu „windows.location.href”. – edwardsmarkf
Ale teraz masz dostęp do obiektu żądania i możesz dostosować 'timeout' przed wysłaniem żądania, co moim zdaniem było twoim celem? – Brandon
prawda - dodano "oReq.timeout = 9999999;" - chociaż teraz zastanawiam się, czy to cały czas problem z apache. – edwardsmarkf