确定下载的(二进制数据)文件的文件名和扩展名

时间:2015-01-31 16:02:09

标签: java apache http download

大家好我正在使用org.apache.http库从网上下载文件。该文件作为条目(HttpResponce对象上的.getEntry())添加到网页中,但文件名似乎未在网页标题或网址中指定。内容类型是application / octet-stream。问题是,当我在浏览器中执行相同的操作时,它们都会获得文件名和扩展名。所以我猜它存储在二进制文件的元数据中,但我不知道如何分析它。任何关于此的提示都会有所帮助。

我获得了以下标题:

x-amz-id-2 : dZjzVbXsHqs+dUXmJ34Nahd1wNFSaZcH0RXC54kmCEvZvj8vNaxtVViDTZB+4kV8
x-amz-request-id : 81D2B0A0469A1902
Date : Sat, 31 Jan 2015 16:18:36 GMT
Last-Modified : Sat, 17 Jan 2015 17:17:52 GMT
ETag : "3a37a8e78c37b3cb575d65539db6326c"
Accept-Ranges : bytes
Content-Type : application/octet-stream
Content-Length : 23905396
Server : AmazonS3

2 个答案:

答案 0 :(得分:0)

来自HTTP Specification

Content-Type

  

Content-Type entity-header字段表示媒体类型   实体主体发送给收件人,或者在HEAD方法的情况下,   如果请求是GET,则会发送的媒体类型。

Content-Disposition

  

Content-Disposition response-header字段已被提议为   表示如果用户,原始服务器建议默认文件名   请求将内容保存到文件中。

因此,您可以使用Content-Disposition标头来标识默认文件名。

如果服务器没有使用Content-Disposition标头回复,则由您来识别资源。随便打电话给你。探究内容以找出它是什么。这是一项非常重要的任务,这就是为什么服务器应该发送该信息的原因。

答案 1 :(得分:0)

(貌似)chrome可以找到名称的原因是因为.apk基于zip格式。并且zip文件包含一些header,他们可以将其标识为带有所谓Magic number的zip。