首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从http下载文件中检索文件名

从http下载文件中检索文件名
EN

Stack Overflow用户
提问于 2012-12-08 20:47:32
回答 2查看 2.1K关注 0票数 5

我正在尝试从with服务器下载一个文件,并将其保存为服务器随文件一起发送的原始文件名。下载工作很好,但我不能得到真正的文件名。

对于真实的例子,我正在尝试下载this file (Foxit PDF Reader)。

如果我在Chrome这样的浏览器中使用这个链接,浏览器会下载带有确切名称的文件,包括版本等。我从哪里得到这个名称?我尝试读取头信息并搜索Content-Disposition,但服务器不发送此信息。我从哪里得到确切的文件名?

我尝试了这样的东西:

代码语言:javascript
复制
try {            
  URL webfile = new URL("http://www.foxitsoftware.com/downloads/latest.php?product=Foxit-Reader");
  URLConnection con = webfile.openConnection();
  Map map = con.getHeaderFields();
  Set set = map.entrySet();
  Iterator iterator = set.iterator();
  while (iterator.hasNext()) {
      System.out.println(iterator.next());
  }
} catch (IOException ex) {
  System.out.println("Error: "+ex.getMessage());
}

正如您在输出中看到的,没有Content-Disposition

代码语言:javascript
复制
null=[HTTP/1.1 200 OK]
ETag=["244005-f36d40-4d003f3868000"]
Date=[Sat, 08 Dec 2012 12:29:02 GMT]
Content-Length=[15953216]
Last-Modified=[Tue, 04 Dec 2012 10:01:36 GMT]
Content-Type=[application/x-msdos-program]
Connection=[close]
Accept-Ranges=[bytes]
Server=[Apache/2.2.16 (Debian)]

那么,我如何检索确切的文件名呢?浏览器中的链接下载名为FoxitReader544.11281_enu_Setup.exe的文件。

有什么想法吗?!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-08 20:52:04

代码语言:javascript
复制
GET /downloads/latest.php?product=Foxit-Reader HTTP/1.1

给出了HTTP/1.1 302 Found的响应

并设置响应头

代码语言:javascript
复制
Location: http://cdn04.foxitsoftware.com/pub/foxit/reader/desktop/win/5.x/5.4/enu/FoxitReader544.11281_enu_Setup.exe

最后,你发布,

代码语言:javascript
复制
GET /pub/foxit/reader/desktop/win/5.x/5.4/enu/FoxitReader544.11281_enu_Setup.exe HTTP/1.1

这似乎就是文件名的来源。因此,如果请求重定向是透明发生的,那么您可能仍然可以从参数中获取文件名。

票数 3
EN

Stack Overflow用户

发布于 2012-12-08 20:54:42

当您请求上面的URL时,服务器将响应一个302重定向到(header key: Location):http://cdn04.foxitsoftware.com/pub/foxit/reader/desktop/win/5.x/5.4/enu/FoxitReader544.11281_enu_Setup.exe,FoxitReader544.11281_enu_Setup.exe是我单击原始链接时保存到我的计算机上的文件名。

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

https://stackoverflow.com/questions/13777590

复制
相关文章

相似问题

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