BaseHTTPServer PDF/DOC Probleme

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Ich hab Probleme bei der Rückgabe von Binärdateien wie z.B. PDF, DOC,
etc. zum Anzeigen im Browser via http. Ich probier das gerade mit einem
kleinen Test BaseHTTPServer. Die Rückgabe von HTML, CSS, PLT, etc.
(also Text Dateien), funktioniert ja auch wunderbar, nur eben bei den
Binärformaten nicht. Ich hab da schon allerhand probiert und gesucht,
komm aber nicht auf einen grünen Zweig. Beim Acrobat Reader [PDF]
kommt die Fehlermeldung "Die Datei ist beschädigt und kann nicht repariert
werden." Bei DOCs öffnet zwar Word, aber es stehen nur "ein paar komische"
Zeichen drin... :roll: Der Code sieht in etwa so aus:

Code: Alles auswählen

def fileOpen(self):
    file_name="test.pdf"
    file_size=os.stat(file_name)[6]
    file=open(file_name,"r")
    file_raw=file.read()
    file.close()
    #self.renderFileOpen("text/html",file_raw,file_size)
    #self.renderFileOpen("application/msword",file_raw,file_size)
    #self.renderFileOpen("application/vnd.hp-HPGL",file_raw,file_size)
    self.renderFileOpen("application/pdf",file_raw,file_size)


def renderFileOpen(self,content_type,file_raw,file_size):
    self.rqh.send_response(200)
    self.rqh.send_header("Content-type", content_type)
    self.rqh.send_header("Content-length", str(file_size))
    self.rqh.end_headers()
    self.rqh.wfile.write(file_raw)
    return 1
Hat jemand eine Idee :oops: ?

Tabellar
r2d2
User
Beiträge: 43
Registriert: Donnerstag 2. März 2006, 23:05
Wohnort: Bielefeld

müsste vielleicht bei Binärdateien

Code: Alles auswählen

file=open(file_name,"rb")
heißen.

hier müsstest du anhand der Extension entscheiden, ob es sich um Binär- oder Text-Dateien handelt.

r2d2
äh, nimm diese schlange von meinem hals.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

hier müsstest du anhand der Extension entscheiden, ob es sich um Binär- oder Text-Dateien handelt.
Es ist in Ordnung einfach immer "rb" zu nehmen unter Windows; man braucht an sich keine Unterscheidung, da zur Not der Browser das \r\n, etc. wegmacht.
--- Heiko.
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

r2d2 hat geschrieben:müsste vielleicht bei Binärdateien

Code: Alles auswählen

file=open(file_name,"rb")
heißen.

hier müsstest du anhand der Extension entscheiden, ob es sich um Binär- oder Text-Dateien handelt.

r2d2
@r2d2&modelnine:
Hey, mit "rb" funktionierts :P. Super!!! Vielen Dank an Euch beide :wink:.
Jetzt muss ich nur noch schauen, dass der httpServer auch noch einen
vernünftigen URL Namen zurückgibt...

Grüsse
Tabellar
Antworten