2011-03-24 48 views

回答

8

URL本身并不具备“文件”或“目录”的概念。 URL的内容由服务器在请求时响应的任何内容定义。如果您获得MIME类型为application/pdf的内容,则该URL代表一个PDF文件。如果你有其他的东西,那么它不是一个PDF文件。

+1

Apache以text/html格式提供静态目录,所以也没有帮助。 – 2011-03-24 00:56:55

+0

所以我必须做一个httprequest,得到一个响应,并寻找响应头中的MIME类型?如果即时通讯使用pdf格式,它和下载文件一样吗? – 2011-03-24 01:13:45

+1

@Yannick Wald:是的,你必须问服务器。但是,您可以执行HEAD请求以仅检索HTTP标头,而不下载整个文件(下载文件将是GET请求)。 – 2011-03-24 01:23:32

2

在任何URL/URI规范,HTTP规范或MIME类型注册表中,根本没有“目录”的概念。

因此,网络服务器有没有办法告诉客户端一个URL解析为一个目录,即使它知道这意味着什么。 (在很多情况下,Web服务器不知道/关心目录本身,如典型的RESTful网络API无法识别的概念。)

的选项有:

  • 尝试获取事情,看看你得到什么样的内容类型。但请记住,Web服务器可能会将任何“目录”呈现为任何内容......因此,通常不可能通过这种方式可靠地将目录与非目录区分开来。

    如果您想避免下载文件,您可以发送HEAD请求而不是GET请求。这需要使用完全成熟的HTTP客户端库而不是URLConnection

  • 更改您的应用程序设计和实现,以便不需要“目录”概念。

  • 更改您的应用程序,使其纯粹基于URL决定什么是“目录”和什么是“文件”。 (在一般情况下,这是行不通的...因为URL名称部分没有普遍遵守的惯例可以让您作出区分。)

  • 更改为使用URL方案/协议“目录”是一个明确定义的概念。例如“file:”或“ftp:”。

0

你从URL中取回的东西本质上不是“文件”或“目录”。充其量,它是一种内容类型的数据流。它通常成为客户端的“文件”,可以通过将其保存到文件系统或临时存储以仅显示。基本上,Web服务器无法告诉客户端某些东西是使用HTTP的目录。

您要么必须创建一些客户端业务逻辑来推断“目录”(可能基于URL,可能缺少文件扩展名?)或使用其他协议。

相关问题