java - 从 URL 或 HttpUrlConnection 获取下载文件名?

标签 java url download httpurlconnection

在 Firefox 中从以下 URL 下载文件(Eclipse 的 win32 zip)时,文件名是 eclipse-jee-juno-SR1-win32.zip

http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR1/eclipse-jee-juno-SR1-win32.zip&url=http://download.eclipse.org/technology/epp/downloads/release/juno/SR1/eclipse-jee-juno-SR1-win32.zip&mirror_id=1

但是,Content-disposition header 中未指定此文件名,这是获取服务器建议的文件名的标准方法。

这里,eclipse的下载只是一个例子。我看到文件名是 URL 的一部分,但是有其他方法来获取文件名吗?在这种情况下,我可以使用正则表达式从 URL 中提取文件名,但不能保证它是每个没有 Content-disposition header 的 URL 的一部分。

问题:当不存在 Content-disposition header 时,如何获取下载的文件名?或者,更本地化的是,Firefox 是如何得出上述名称的?

或者 Firefox 只是在这里解析 URL,而我遇到过一种情况,尽管从间接的脚本交付的下载中提取了文件名,但它仍然可以正常工作?

最佳答案

内容处置是服务器建议文件名的标准方法。在没有内容处置 header 的情况下,完全由客户端来提供文件名。最常见的选项是选择路径的最后一段。

在没有内容处置 header 的情况下,服务器甚至没有真正表示 URL 应该下载到文件而不是显示。只是大多数浏览器默认将无法显示的任何内容保存为文件。

关于java - 从 URL 或 HttpUrlConnection 获取下载文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435940/

相关文章:

java - Spring配置的模拟给出了两个不同的实例

html - HTTP 空间请求中的 URLencoding

通过代码下载php图像文件

download - phpstorm远程主机(SFTP)自动下载

java - 在jsp中传递变量时出错?

java - 选择sqlite android

java - 从 Java 程序启动外部 Java 程序

swift - 如何从 URL 快速加载图像

android - 在移动应用程序中嗅探 REST API URL

node.js - 使用node.js下载多个图像并等待所有请求完成