【发布时间】:2017-05-29 13:24:16
【问题描述】:
我想要做的是用 httpclient 下载一个文件。目前我的代码如下。
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(downloadURL);
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
FileOutputStream fos = new FileOutputStream("C:\\file");
entity.writeTo(fos);
fos.close();
}
我的下载地址是这样的:http://example.com/file/afz938f348dfa3
如您所见,文件没有扩展名(至少在 url 中),但是,当我使用普通浏览器访问 url 时,它会下载文件“asdasdaasda.txt”或“asdasdasdsd.pdf” (名称与网址不同,扩展名并不总是相同,取决于我尝试下载的内容)。
我的 http 响应如下所示:
日期:2017 年 5 月 29 日星期一 14:57:14 GMT 服务器:Apache/2.4.10 内容处置:附件;文件名="149606814324_testfile.txt" 接受范围:字节缓存控制:公共,最大年龄 = 0 最后修改: 2017 年 5 月 29 日星期一 14:29:06 GMT Etag: W/"ead-15c549c4678-gzip" 内容类型:文本/纯文本; charset=UTF-8 变化:接受编码 内容编码:gzip 内容长度:2554 保持活动:超时 = 5, max=100 连接:保持活动状态
我怎样才能让我的 java 代码自动将具有好名称和扩展名的文件下载到特定文件夹中?
【问题讨论】:
-
您可能想要this header,但当然这实际上取决于服务器如何提供文件;显示请求 URL 时收到的纯 HTTP 响应示例,或提供您正在使用的有效可访问 URL 以获得更多帮助
-
@OvidiuDolha 日期:2017 年 5 月 29 日星期一 14:57:14 GMT 服务器:Apache/2.4.10 内容处置:附件;文件名 =“149606814324_testfile.txt”接受范围:字节缓存控制:公共,最大年龄 = 0 最后修改时间:星期一,2017 年 5 月 29 日 14:29:06 GMT Etag:W/“ead-15c549c4678-gzip”内容-类型:文本/纯文本; charset=UTF-8 变化:Accept-Encoding Content-Encoding:gzip Content-Length:2554 Keep-Alive:timeout=5,max=100 Connection:Keep-Alive
标签: java apache download httpclient