我正在使用此行来使用DownloadManager
将我应用中的一系列文件下载到公共Download
目录中:
request.setDestinationInExternalPublicDir( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getName(), "");
我应该将文件的原始名称添加为第二个参数,但问题是,我没有这个名字。我的请求是一个不包含原始名称的网址。例如,我请求http://whatever.com/getmethefilewithid/1,此页面返回嵌入在响应中的文件。
现在,如果我不使用上面的行指定下载目的地,则此名称会附加到下载的文件(在我的应用程序目录中下载)。
如何在发出请求之前获取此名称,以便将其附加到下载路径?
答案 0 :(得分:0)
自己下载文件(并跳过DownloadManager
),或者自己下载 以获取包含文件名的HTTP标头(或按照重定向或其他方式)。< / p>
答案 1 :(得分:0)
这是我根据CommonsWare的回答做的:
Integer bytes = 0;
URL resUrl = new URL(originalUrl);
URLConnection urlConnection = resUrl.openConnection();
urlConnection.getHeaderFields();
String contentDispositionHeader = urlConnection.getHeaderField("Content-disposition");
filename = null;
Pattern regex = Pattern.compile("(?<=filename=\").*?(?=\")");
Matcher regexMatcher = regex.matcher(contentDispositionHeader);
if (regexMatcher.find()) {
filename = regexMatcher.group();
}