2016-08-11 3 views
0

herunterladen Meine Hauptaufgabe ist es, den Benutzer einen Download-Button drücken und laden Sie die Datei "A.zip" aus dem Abfrageverzeichnis.Erlaube dem Benutzer, ZIP von Django view

Der Grund, warum ich eine elif Anfrage habe. PORT ..... ist, weil ich eine andere Bedingung habe, die überprüft, ob der "Execute" Knopf gedrückt wurde. Diese Schaltfläche Ausführen führt ein Skript aus. Beide POST-Aktionen funktionieren, und die Datei dir_file ist C: \ Data \ Folder.

Ich folgte und las viele Tutorials und Antworten, wie man eine Datei von Django herunterladen kann, und ich kann nicht herausfinden, warum mein einfacher Code eine Datei nicht herunterlädt.

Was fehlt mir? Der Code gibt keine Fehler zurück. Hat jemand eine Dokumentation, die erklären kann, was ich falsch mache?

Ich erwarte einen automatischen Download der Datei, aber nicht auftreten.

elif request.POST['action'] == 'Download': 
    query = request.POST['q'] 
    dir_file = query + "A.zip" 
    zip_file = open(dir_file, 'rb') 

    response = HttpResponse(zip_file, content_type='application/zip') 
    response['Content-Disposition'] = 'attachment; filename=%s' % 'foo_zip' 

    zip_file.close() 

Antwort

0

Ich fand meine Antwort.

Nachdem ich viele Dokumentationen darüber gelesen habe, habe ich den wichtigsten Aspekt dieses Features weggelassen, nämlich die url.

Im Grunde wird die Funktion download_zip vom POST aufgerufen und führt ein Skript aus, in das die ZIP heruntergeladen wird. Hier

ist, was ich am Ende tun:

elif request.POST['action'] == 'Download': 
     return(HttpResponseRedirect('/App/download')) 

Blick Erstellt:

def download_zip(request): 
    zip_path = root + "A.zip" 
    zip_file = open(zip_path, 'rb') 
    response = HttpResponse(zip_file, content_type='application/zip') 
    response['Content-Disposition'] = 'attachment; filename=%s' % 'A.zip' 
    response['Content-Length'] = os.path.getsize(zip_path) 
    zip_file.close() 

    return response 

schließlich in urls.py:

url(r'^download/$', views.download_zip, name='download_zip'), 
Verwandte Themen