首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过servlet传递解压后的文件,而无需先在服务器上解压

通过servlet传递解压后的文件,而无需先在服务器上解压
EN

Stack Overflow用户
提问于 2011-04-11 20:20:06
回答 3查看 684关注 0票数 2

在我的web服务器所在的网络上,有一台机器有许多压缩的pdf文件(用java.util.zip压缩),我可以通过超文本传输协议访问这些文件。当用户想要下载pdf文件时,我知道如何首先在服务器上本地解压缩该文件,然后通过servlet将解压缩后的pdf提供给用户。有没有可能在不先在本地解压的情况下将解压缩后的文件传递给用户?

问候

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-11 20:45:20

原则上,如果客户在他的请求中说他接受gzip压缩的数据,你可以以压缩的形式发送PDF文件,客户端解压缩它。然而,有一个问题:虽然压缩文件的压缩算法和HTTP Content-Encoding: gzip是相同的,但压缩文件格式有更多的东西(因为它可以包含多个文件和一个目录结构),所以有必要在此之前去掉这些东西。我不确定这是否比在servlet中解压,然后让Servlet引擎负责再次压缩要容易得多,但请尝试一下。

票数 1
EN

Stack Overflow用户

发布于 2011-04-11 20:41:22

您可以将响应发送到以压缩格式编码的请求。如果客户端使用标头执行请求

代码语言:javascript
代码运行次数:0
运行
复制
Accept-Encoding: gzip, deflate

例如,您可以为他提供使用gzip压缩的内容(只要您通过标题声明:)

代码语言:javascript
代码运行次数:0
运行
复制
Content-Encoding: gzip

来源:Wikipedia: HTTP Compression

票数 1
EN

Stack Overflow用户

发布于 2011-04-11 20:45:41

是否可以在不先在本地解压的情况下将解压缩后的文件传递给用户?

这有点取决于你所说的“本地”到底是什么意思,通常的答案是“不”。要传送解压缩后的内容,必须先解压缩。

如果您的实际意思是zip文件位于某个非本地计算机上,并且您当前需要先在本地保存和压缩它,然后再流式传输解压缩的内容,那么答案将是“是”,可以在不本地保存文件的情况下解压缩和流式传输它。只需传递/修饰流,而不使用FileInputStream/FileOutputStream

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5621157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档