Estoy haciendo una llamada AJAX a una vista POST de Django . Está leyendo archivos X localmente y luego enviándolos al front-end (gracias a ajax), para que el usuario pueda descargarlos.
Todo funciona bien en esta parte, pero me gustaría tener algún tipo de " respuesta intermedia ", que le diría a Ajax cada vez que el servidor lee un archivo.
De esa manera, podría crear una barra de carga en el front-end mientras el servidor procesa la solicitud.
¿Hay alguna forma de hacerlo, usando ajax, o algo más (cualquier cosa estaría bien, siempre y cuando mantuviera mi solicitud de ajax en algún lugar).
Aquí está mi código, bastante simplificado, para que puedas entender mejor lo que me gustaría que hiciera:
Django :
def downloadFiles_API(request): if request.is_ajax and request.method == "POST": requested_files = json.loads(request.body)['files'] for file in requested_files: # Handle file reading (this part works) # Here i'd like to tell the front end "File X has been loaded..." (for each file) # Zip-ing all files, and send it as response return FileResponse(myZipFile)AJAX :
$.ajax({ url: "/api/downloadFiles/", type: 'POST', contentType: "application/json; charset=utf-8", data: JSON.stringify({ "files" : filesThatTheUserWants, }), xhrFields:{ responseType: 'blob' }, success: function (response){ // Download the file in response (this works) }, // And what i'd like to add (it's NOT in my code): onProgress: function (intermediateResponse){ console.log(intermediateReponse); // Would print "File X has been loaded..." // Each time a file is loaded on server side }Nota: Encontré algunas preguntas similares, pero son demasiado genéricas o no explican la parte de ajax (como estas: Enviar mensajes intermedios durante una llamada de Ajax o Cómo transmitir una HttpResponse con Django )