Sto tentando di utilizzare jquery ajax per scaricare un file audio binario.Utilizzo di jquery ajax per scaricare un file binario
Normalmente vorrei solo emettere un comando come questo:
windows.location.href = 'http://marksdomain(dot)com/audioFile.wav' ;
Tuttavia, recentemente il nostro server ha aspettato troppo tempo per rispondere, ed ottengo un messaggio di gateway timeout brutto.
È stato suggerito di utilizzare invece jquery-ajax, il che ha senso da allora avrei più controllo sul timeout.
Ecco il codice che ho giocato con finora:
$.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);
}
Quando ho Tralascio il "dataType", il file binario è in arrivo attraverso circa tre volte più grande di quello che in realtà si trova sul server. Tuttavia, quando faccio il dataType uguale a "binario", ajax genera un errore:
"No conversion from text to binary"
Da alcuni post precedenti, suona come se jquery-ajax non può gestire i file binari in questo modo.
Ho scoperto Delivery.js che in realtà funziona abbastanza bene per quello che sto tentando, ma preferirei non utilizzare una soluzione di nodo, se possibile.
Qualche suggerimento?
il problema è che questa soluzione ottiene ancora il problema di timeout, proprio come l'utilizzo di "windows.location.href". – edwardsmarkf
Ma ora hai accesso all'oggetto richiesta e puoi regolare il timeout prima di inviare la richiesta, che credo fosse il tuo obiettivo? – Brandon
true - ho aggiunto "oReq.timeout = 9999999;" - anche se ora mi chiedo se tutto questo sia stato un problema apache da sempre. – edwardsmarkf