2014-02-21 51 views
0

我使用这条线使用DownloadManager在我的应用程序下载一系列文件向公众Download目录:使用下载管理器下载文件到公众下载目录与原文件名

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

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

现在,如果我不使用上面的行来指定下载目标,那么该名称会附加到下载的文件(该文件将下载到我的应用程序目录中)。

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

回答

0

无论是自己下载的文件(并跳过DownloadManager),或下载足够自己获得包含您的文件名中的HTTP标头(或跟随重定向,或其他)。

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