2013-08-21 11 views
5

Sono nuovo nel framework Tornado. Quando imposto il tipo di intestazione application/pdf, Ma richiede solo il tipo MIME predefinito i.e; plian/text. Qui il mio codice,Come gestire il tipo MIME nel tornado?

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
      ifile = open("requirements.txt", "r") 
      self.set_header('Content-Type', 'application/pdf; charset="utf-8"') 
      self.set_header('Content-Disposition', 'attachment; filename="test.pdf"') 
      #print(self.list_headers()) 
      self.write(ifile.read()) 

Si sta scaricando con successo tramite browser web. Qui url http: /203.193.173.102: 8888 /. Ma quando apro il file pdf non viene aperto. Qualcuno mi aiuti. Grazie

+0

Perché si apre 'requirement.txt' invece di' test.pdf'? – falsetru

+0

Grazie per la risposta. Non so come leggere il file pdf nel tornado. – dhana

risposta

7

Provatelo:

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     with open('test.pdf', 'rb') as f: 
      self.set_header("Content-Type", 'application/pdf; charset="utf-8"') 
      self.set_header("Content-Disposition", "attachment; filename=test.pdf")     
      self.write(f.read()) 
+0

Ho provato questo. Ma dà l'errore -> UnicodeDecodeError: il codec 'utf8' non può decodificare il byte 0xb5 in posizione 10: byte di start non valido – dhana

+0

Ho modificato la risposta, provalo un'altra volta. – alecxe

+0

Ho ricevuto lo stesso errore. – dhana

Problemi correlati