Java 从Servlet下载包含其他数据的PDF文件

Java 从Servlet下载包含其他数据的PDF文件,java,iphone,servlets,Java,Iphone,Servlets,如何在同一HTTP请求中将PDF文件和其他数据下载到Servlet? 例如,我的服务器中有一个PDF文件,我希望在同一请求中使用该PDF文件和其他数据(如myname和myage等)响应请求。可以在同一个请求上完成吗?Java Servlet API没有为多部分响应提供任何内置机制(这是您正在寻找的功能的名称)。Servlet API文档提示了如何实现这一点,具体如下: 在MIME正文中发送二进制数据 响应时,使用ServletOutputStream 由getOutputStream()返回。

如何在同一HTTP请求中将PDF文件和其他数据下载到Servlet?
例如,我的服务器中有一个PDF文件,我希望在同一请求中使用该PDF文件和其他数据(如
myname
myage
等)响应请求。可以在同一个请求上完成吗?

Java Servlet API没有为多部分响应提供任何内置机制(这是您正在寻找的功能的名称)。Servlet API文档提示了如何实现这一点,具体如下:

在MIME正文中发送二进制数据 响应时,使用ServletOutputStream 由getOutputStream()返回。发送 字符数据,请使用PrintWriter getWriter()返回的对象。调和 二进制和文本数据,例如 创建一个多部分响应,使用 ServletOutputStream并管理 手动创建字符段


通过将响应的内容类型(MIME类型)设置为“Multipart/x-mixed-replace;boundary=xyz”,可以创建多部分响应。值
xyz
是任意的,用于描述响应的几个部分。多部分响应类的实现可以在书中找到,也可以在中找到(在项目中使用它之前,请先阅读许可证)。

如果此其他数据只是文本,也许您可以将其作为响应的标题包含进去。

此“其他数据”的确切用途是什么?功能要求是什么?是否要从单击下载链接的位置刷新当前JSP?或者你想将该数据嵌入PDF文件本身?@BalusC nope我正在将PDF文件下载到我的iphone中,其中包含PDF文件内容的描述,我需要它们满足相同的请求,文件及其描述因此,“其他数据”只是PDF文件名,它应该显示在“另存为”对话框中?@BalusC nope,我告诉你文件描述例如:我有一个名为1234.pdf的pdf文件,它包含学生成绩。。。我希望响应中包含文件和关于其内容的描述(在同一请求中为学生成绩),我是否可以将我的pdf对象(以[]字节为单位)存储在JSON对象中,并使用getWriter()将其与响应一起返回;我的意思是:out=response.getPrintWriter();JSONObject obj=新的JSONObject();obj.put(“名称”、“法拉新”);对象put(“pdffile”,文件单位);打印输出(obj)//我知道这是行不通的,但我不能使用这样的技术吗?@farajnew,上次我检查时,任何PDF文件都会包含非文本信息,因为它包含二进制信息(字体、图像等);除非将其编码为文本表示形式,否则我看不出如何将其存储在JSON对象中。@Vinet Reynolds我看到了这一点,但我使用的是不同的库,这能行吗?我正在搜索的是。。。。我可以序列化pdf文件并将其发送到JSON对象中,然后将JSONobject发送到客户端吗?@farajnew,不,我不这么认为。将PDF文件的内容映射到JSON对象不是一个简单的练习,除非您有一组表示PDF文件的Java类和对象。您可能希望使用Base64或任何其他编码方案对表示PDF文件的字节序列(这是我的假设)进行编码,这些编码方案将为您提供一组字符(然后可以放置在JSON响应中)。我可以将一个小JSON对象放在头中吗?它最多只包含4个键?您可以放置4个标题,名称前缀为X-,正如Wikipedia所说,这是传统的:(常见的非标准标题)顺便说一句:似乎有人已经想到在标题中放置JSON编码的数据: