2013-08-21 20 views
5

Jestem nowy w ramach Tornado. Kiedy ustawiam typ nagłówka application/pdf, ale przyjmuje on tylko domyślny typ MIME tj.; plian/text. Oto mój kod,Jak radzić sobie z typem MIME w 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()) 

To jest pobieranie za pomocą przeglądarki internetowej. Tutaj URL http: /203.193.173.102: 8888 /. Ale kiedy otworzę plik pdf, nie jest on otwierany. Każdy mi pomoże. Dzięki

+0

Dlaczego otwarciu 'requirement.txt' zamiast' test.pdf'? – falsetru

+0

Dzięki za odpowiedź. Nie wiem, jak czytać plik pdf w tornado. – dhana

Odpowiedz

7

Spróbować:

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

Próbowałem tego. Ale daje błąd -> UnicodeDecodeError: kodek "utf8" nie może dekodować bajtu 0xb5 na pozycji 10: niepoprawny bajt startowy – dhana

+0

Edytowałem odpowiedź, spróbuję jeszcze raz. – alecxe

+0

Mam ten sam błąd. – dhana

Powiązane problemy