从互联网上下载Java文件,链接中没有名称?

标签 java file url

当文件没有直接 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/

相关文章:

jquery - 是否可以在 url jquery 中发送对象

java.xml.Validator : xsi:schlemaLocation is ignored when namespaces are present

java - Android Studio : Plugin with id 'com.android.application' not found

java - 如何在 Spring MVC 中使用绝对路径加载图像?

java - 如何将 CSV 文件中的 NaN 值转换为 0?

带有混合输入标签的 html 表单(类型=文件和其他)

java - 如何使用 Jsoup 解析相对 url?

linux - 在守护进程使用时监视日志文件

powershell - 备份文件删除器

.htaccess - 将页面重定向到不同域下的同一页面