在 JSON 响应中返回文件/文件 (Java-Jersey-ReST)
Posted
技术标签:
【中文标题】在 JSON 响应中返回文件/文件 (Java-Jersey-ReST)【英文标题】:Returning file/files in JSON response (Java-Jersey-ReST) 【发布时间】:2014-12-17 17:01:15 【问题描述】:我正在研究一个在 JSP 上显示用户消息的用例。流程详情如下:
所有邮件都将显示在带有附件图标的表格中 当用户点击附件时,文件应该会被下载。 如果有多个附件,用户可以选择需要的 一个下载。 附件将存储在本地文件系统中,附件的路径将由系统确定。我已尝试通过参考这些 SO 问题来实施:
Input and Output binary streams using JERSEY? Return a file using Java Jersey file downloading in restful web services但是,这并没有解决我的目的。我有以下问题:
-
是否可以在一个响应中连同附件 (Inputstream) 一起发送消息数据(如主题、消息、消息 ID 等)?
如果是,我的资源方法中
@Produces
注释的MediaType
需要是什么?目前我的资源用@Produces(MediaType.APPLICATION_JSON)
注释。这行得通吗?
如何在响应中发送文件数据?
任何指针表示赞赏。 TIA。
【问题讨论】:
【参考方案1】:您可以将自定义数据添加到响应标头,所以是的,您可以发送此类消息数据。将数据添加到响应 Header。
@Produces(MediaType.APPLICATION_JSON)
将不起作用,除非客户端接受 JSON 作为文件,他们应该做什么和不应该做什么;)
正确的MediaType
取决于您要提交的文件类型。
您可以使用默认的 MediaType / MIME-Type MediaType.APPLICATION_OCTET_STREAM
/ application/octet-stream
(Is there a “default”
MIME type?),但我认为最好为您的文件使用正确且准确的 MIME-Type。
您将在Input and Output binary streams using JERSEY? 中找到使用球衣发送文件数据的工作示例 - 因此无需再次回答这个问题:)
希望这对您有所帮助,祝您有美好的一天。
【讨论】:
以上是关于在 JSON 响应中返回文件/文件 (Java-Jersey-ReST)的主要内容,如果未能解决你的问题,请参考以下文章