当文件没有直接 URL 时,如何从互联网下载文件?主要问题 - 我在哪里可以获取文件的名称和扩展名?
例如,当 URL =“defaultSite.com/topic/9772.png”时,我们可以获取字符串的最后一部分并创建文件“9772.png”,在其中保存字节流。
但从 URL 来看:
http://www.skype.com/go/getskype
https://www.dropbox.com/download?plat=win
我们无法获取文件名,但是我们可以毫无问题地保存字节流。那么我怎样才能下载这样的文件呢?
更新: 我认为 MIME 帮不上忙,因为文件可以具有特定的(用户创建的)扩展名,或者即使对于 .exe 文件,它也会返回给我应用程序/八位字节流。除了留下文件名的问题之外。
更新2: 是的,服务器返回 header ,但可能没有文件名。 来自 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 header 之一是
Content-Disposition: filename=checkimage.jpg
或给出另存为提示
Content-Disposition: attachment; filename=checkimage.jpg
(checkimage.jpg is arbitrary here.)
如果服务器没有提供文件名,那么您需要创建一个文件名。而且,如果不使用附件形式,浏览器将使用HTTP header 中提供的MIME类型来决定在哪个应用程序中打开返回的数据。
关于从互联网上下载Java文件,链接中没有名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814260/