Para desactivar este funcionamiento y hacer el envío "raw" tenemos que poner el responseType como 'blob', de esta forma:
$("#bt_envia").on("click", function (e) { var x = new XMLHttpRequest(); x.onload = function() { // Create a form var fd = new FormData(); fd.append("upfile", x.response); // x.response is a Blob object fd.append("csrfmiddlewaretoken", "{{ csrf_token }}"); // Upload to your server var y = new XMLHttpRequest(); y.onload = function() { alert('Fichero subido!!'); }; y.open('POST', '/gestion/prova/'); y.send(fd); }; x.responseType = 'blob'; x.open('GET', 'http://planetary.s3.amazonaws.com/assets/images/spacecraft/2013/20131108_2013-3896_f537.jpg', true); x.send();
En la parte del servidor, los FILES nos vendrán directamente en el formato nativo, así que sólo tenemos que tratarlos directamente, por ejemplo grabando una imagen en un fichero.
def prova(request): #print str(request.body) # veure https://docs.djangoproject.com/en/dev/topics/http/file-uploads/ print "Els files son ", str(request.FILES) f = request.FILES['upfile'] with open('c:/prova.jpg', 'wb+') as destination: for chunk in f.chunks(): destination.write(chunk) return HttpResponse('Mu guay')
Fuente: varios en stackoverflow
No hay comentarios:
Publicar un comentario