我想用Django的httpresponse
方法下載文件。該文件的名稱有一些特殊字符,如中文。我可以用下面的代碼下載文件,但文件名稱顯示爲「%E6%B8%B8%E6%88%8F%E6%B5%8F%E8%A7%88%E5%99%A8%E6% B3%A8%E5%86%8C%E9%A1%B5%E9%9D%A2.jpg」。使用HttpResponse在Django中下載名稱中包含中文字符的文件
誰能告訴我如何轉換文件名?
response = HttpResponse(attachment.file, content_type='text/plain',mimetype='application/octet-stream')
response['Content-Disposition'] = "attachment; filename="+urlquote(filename)
return response
編輯:
另一個問題用smart_str
時出來,文件名可以正常在Firefox和Chrome中顯示,但不是在IE:在IE中它仍然顯示了一些未知字符。有誰知道如何解決這個問題?
在此先感謝!
---通過使用urlquote
和smart_str
解決IE和其他瀏覽器的不同。
您是否嘗試過不調用urlquote? – jpic 2012-03-02 10:00:49
是的,但沒有urlquote,unicode錯誤將顯示 – Angelia 2012-03-02 10:40:25
你應該替換「附件由u」附件,我認爲...也嘗試force_unicode而不是urlquote(從django.utils.encoding導入force_unicode) – jpic 2012-03-02 10:55:57