链接中没有名称的Java从internet下载文件?

链接中没有名称的Java从internet下载文件?,java,file,url,Java,File,Url,当文件没有直接的URL时,如何从internet下载文件?主要问题-在哪里可以获取文件的名称和扩展名 例如,当URL=“defaultSite.com/topic/9772.png”时,我们可以获取字符串的最后一部分并创建文件“9772.png”,在其中保存字节流 但从URL中,例如: 我们不能使用文件名,但是我们可以毫无问题地保存字节流。那个么我怎样才能下载这样的文件呢 upd: 我认为MIME帮不上忙,因为这个文件可以有特定的(用户创建的)扩展名,或者它可以返回给我应用程序/octet流

当文件没有直接的URL时,如何从internet下载文件?主要问题-在哪里可以获取文件的名称和扩展名

例如,当URL=“defaultSite.com/topic/9772.png”时,我们可以获取字符串的最后一部分并创建文件“9772.png”,在其中保存字节流

但从URL中,例如:

我们不能使用文件名,但是我们可以毫无问题地保存字节流。那个么我怎样才能下载这样的文件呢

upd: 我认为MIME帮不上忙,因为这个文件可以有特定的(用户创建的)扩展名,或者它可以返回给我应用程序/octet流,甚至对于.exe文件也是如此。除此之外,还有文件名遗留的问题

upd2: 是的,服务器返回头,但可能没有文件名。 skype中有以下示例:

conn.getHeaderField 0 : HTTP/1.1 200 OK
conn.getHeaderField 1 : nginx
conn.getHeaderField 2 : application/octet-stream
conn.getHeaderField 3 : 30619240
conn.getHeaderField 4 : Thu, 28 Feb 2013 19:35:47 GMT
conn.getHeaderField 5 : bytes
conn.getHeaderField 6 : max-age=86400
conn.getHeaderField 7 : Thu, 04 Apr 2013 14:52:26 GMT
conn.getHeaderField 8 : keep-alive
conn.getHeaderField 9 : S

我需要一个可靠的方法来获取名称和分机名

更重要的是,服务器没有建议文件名。服务器可以添加到下载响应的HTTP头之一是

Content-Disposition: filename=checkimage.jpg
或给出另存为提示

Content-Disposition: attachment; filename=checkimage.jpg

(checkimage.jpg is arbitrary here.)
如果服务器没有提供文件名,那么您需要补充一个文件名。而且,如果它不使用附件表单,浏览器将使用HTTP头中提供的MIME类型来决定在哪个应用程序中打开返回的数据。

从,我将被重定向到,然后转到


因此,您需要遵循重定向,您正在使用的java库可能会自动执行此操作(但您没有说明是哪一种),但无论哪种方式,最后一次重定向都将指向确切的URL。

web没有文件的概念,仅URL。您需要了解HTTP响应和MIMEHTTP响应,您得到的响应可能包含带有文件名的
内容处置
标题,但这不是必需的。