使用DownloadManager将文件下载到公共文件下载目录

时间:2014-02-21 11:57:15

标签: android

我正在使用此行来使用DownloadManager将我应用中的一系列文件下载到公共Download目录中:

request.setDestinationInExternalPublicDir( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getName(), "");

我应该将文件的原始名称添加为第二个参数,但问题是,我没有这个名字。我的请求是一个不包含原始名称的网址。例如,我请求http://whatever.com/getmethefilewithid/1,此页面返回嵌入在响应中的文件。

现在,如果我不使用上面的行指定下载目的地,则此名称会附加到下载的文件(在我的应用程序目录中下载)。

如何在发出请求之前获取此名称,以便将其附加到下载路径?

2 个答案:

答案 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();
        }