django-die Rückkehr-Datei über die HttpResponse - Datei ist nicht ordnungsgemäß zugestellt

Möchte ich wieder einige Dateien in eine HttpResponse-und ich bin mit der folgenden Funktion. Die Datei, die zurückgegeben wird, hat immer eine Dateigrösse von 1kb und ich weiß nicht, warum. Ich kann die Datei öffnen, aber es scheint, dass es nicht ordnungsgemäß zugestellt. Daher wollte ich wissen, wie kann man return-Dateien mit django/python über eine HttpResponse.

@login_required
def serve_upload_files(request, file_url):
    import os.path
    import mimetypes
    mimetypes.init()

    try:
        file_path = settings.UPLOAD_LOCATION + '/' + file_url
        fsock = open(file_path,"r")
        #file = fsock.read()
        #fsock = open(file_path,"r").read()
        file_name = os.path.basename(file_path)
        file_size = os.path.getsize(file_path)
        print "file size is: " + str(file_size)
        mime_type_guess = mimetypes.guess_type(file_name)
        if mime_type_guess is not None:
            response = HttpResponse(fsock, mimetype=mime_type_guess[0])
        response['Content-Disposition'] = 'attachment; filename=' + file_name            
    except IOError:
        response = HttpResponseNotFound()
    return response

Bearbeiten:
Der bug ist eigentlich kein bug 😉

Diese Lösung ist in der Produktion auf einem apache-server, damit die Quelle ist ok.

Beim schreiben dieser Frage getestet habe ich es mit der lokalen django development server und Frage mich, warum es nicht funktioniert. Ein Freund von mir erzählte mir, dass dieses Problem könnte entstehen, wenn die mime-Typen sind nicht in den server. Aber er war nicht sicher, ob dies das problem ist. Aber eine Sache ist sicher.. es hat etwas zu tun mit dem server.

InformationsquelleAutor der Frage Thomas Kremmel | 2010-03-29

Schreibe einen Kommentar