如何將PDF文件與其他數據一起下載到同一HTTP請求中的Servlet中? 例如,我在我的服務器中有一個PDF文件,我想用該PDF文件和其他數據(如myname
和myage
等)對同一請求作出響應。它可以在同一個請求上完成嗎?下載帶有來自Servlet的附加數據的PDF文件
回答
Java Servlet API不提供任何多部分響應的內置機制(這是您正在查找的功能的名稱)。 Servlet API的文檔暗示了這是如何實現的,在ServletResponse API doc:
要在MIME體 響應發送二進制數據,請使用的getOutputStream返回的ServletOutputStream的 ()。要發送 字符數據,請使用getWriter()返回的PrintWriter 對象。要將 二進制和文本數據(例如 )混合起來,請創建多部分響應,使用 ServletOutputStream並手動管理 字符部分。
通過將響應的內容類型(MIME類型)設置爲「multipart/x-mixed-replace; boundary = xyz」來創建多部分響應。值xyz
是任意的,用於描述響應的幾個部分。可以在書籍"Java Servlet Programming" by Jason Hunter以及KickJava site(請在您的項目中使用該許可證之前閱讀許可證)中找到Multipart Response類的實現。
我可以在JSON對象中存儲我的[]字節的pdf對象,並使用getWriter()返回響應;我的意思是: out = response.getPrintWriter(); JSONObject obj = new JSONObject(); obj.put(「name」,「farajnew」); obj.put(「pdffile」,fileinbytes); out.print(obj); //我知道這不起作用,但我不能使用這樣的技術? – farajnew 2011-05-18 21:37:17
@farajnew,我上次檢查時,任何PDF文件都會包含非文本信息,它包含二進制信息(字體,圖像等);我看不出如何將它存儲在JSON對象中,除非將它編碼爲文本表示。 – 2011-05-18 21:40:39
@Vineet Reynolds 我看到了這個,但我使用了不同的庫, http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONSerializer.html#toJSON(java.lang.Object) 可以工作嗎? – farajnew 2011-05-18 21:43:42
如果其他數據只是文字,也許你可以把它包括它作爲響應
我可以在標題中放置一個小JSON對象嗎? 它最多隻包含4個鍵? – farajnew 2011-05-18 21:50:17
您可以放4個標題,名稱前面加上X-,因爲維基百科認爲它是常規的:[List_of_HTTP_header_fields](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields)(通用非標準標題) – AdrianRM 2011-05-19 17:41:55
順便說一下:似乎有人已經想過把JSON編碼的數據放在標題中:http://deadlytechnology.com/scripts/return-json-array-using-ajax-and-prototype/ – AdrianRM 2011-05-19 17:45:52
- 1. 下載帶有Tomcat servlet的文件被下載不完整
- 2. 使用來自servlet的Ajax數據加載JQuery數據表
- 3. 附帶XML文件的PDF文件
- 4. 使用Django服務下載帶有附加一些數據大zip文件
- 5. 將數據附加到帶有DOM文檔的xml文件
- 6. 帶有內容處理的PHP文件下載問題:附件
- 7. Servlet下載來自遠程服務器的文件
- 8. umbraco 7:從pdf下載附件pdf
- 9. 在c中加載不帶附件的附件文件名#
- 10. 從url中加載一個帶有中文文件名的pdf
- 11. python請求上傳帶有附加數據的大文件
- 12. 從外部Web服務下載帶有JQuery/JSON的pdf文件
- 13. 使用JavaScript下載沒有附帶擴展名的文件
- 14. 來自DB行的多附加文件
- 15. 如何訪問servlet並下載附件?
- 16. 帶有selectize.js和來自XML文件的數據的列表框
- 17. 帶有數據參數的CodeIgniter加載文件
- 18. 帶有pdf文件附件可能性的Android Mail Api?
- 19. 無法使用JavaMail下載Java附件的PDF附件
- 20. 下載PDF文件
- 21. php pdf文件下載:無法加載PDF文檔
- 22. 將文件附加到PDF
- 23. 加載來自PDF與Java itextpdf的JavaScript
- 24. 禁止自動下載pdf文件
- 25. 在Firefox中自動下載pdf文件
- 26. 3 PDF文檔帶有一個附錄
- 27. 帶有WGET的NodeJS文件下載器?
- 28. 我想下載附帶jsp的示例文本文件
- 29. 使用servlet下載文件
- 30. PDF數據顯示,但文件沒有下載
到底是什麼,「其他數據」的宗旨的頭?什麼是功能要求?你想從點擊下載鏈接的地方刷新當前的JSP嗎?或者你想將這些數據嵌入PDF文件本身? – BalusC 2011-05-18 21:32:30
@BalusC nope我正在下載pdf文件到我的iphone與描述該文件的pdf文件內容 我需要他們在同一個請求,文件及其說明 – farajnew 2011-05-18 21:40:37
所以,「其他數據」只是文件名它應該出現在*另存爲*對話框中 – BalusC 2011-05-18 21:45:00