2012-03-05 27 views
0

我使用PDFKit在瀏覽器中生成PDF。然後,我將PDF發佈到一個龍捲風web服務器,我想將其作爲下載返回到瀏覽器。下面是請求處理程序:從Tornado下載JavaScript生成的二進制碼

class PDF(RequestHandler): 
    def post(self): 
     logger.info("Received PDF.") 
     self.set_header('Content-Type', 'application/pdf') 
     self.set_header('Content-Disposition', 'attachment; filename="export.pdf"') 
     self.write(self.request.body) 
     logger.info("Returning PDF.") 

然而,下載的PDF似乎是URL編碼(斜線顯示爲%2F等)。我在這裏做錯了什麼?

+1

你確定它不是上傳的PDF文件有這些問題嗎?也許這是您編碼上傳表單的方式的問題? – 2012-03-05 09:06:30

+0

你是對的。所以我實際上是先base64編碼上傳的PDF。我現在在服務器端進行解碼,所以文件看起來更好,但它仍然不被認爲是有效的PDF。 – 2012-03-05 23:05:16

+0

您是否嘗試將其保存到服務器上的本地文件中,而不是從龍捲風返回,只是爲了排除龍捲風與它有關? – 2012-03-06 06:53:10

回答

0

問題實際上是base64解碼和URL無法解決的組合。以下作品現在:

class PDF(RequestHandler): 
    def post(self): 
     self.set_header('Content-Type', 'application/pdf') 
     self.set_header('Content-Disposition', 'attachment; filename="export.pdf"') 
     self.write(b64decode(escape.url_unescape(self.request.body.split("=")[1])))