由于Raghunandan的建议,我得到了答案。
在这里,我需要额外的电话来获取下载文件的标题信息。在标题部分我得到了该文件的名称。
而且我发现这个Filename from URL not containing filename suffix后,通过它我就头的细节,我们可以提出请求时得到更多的细节。
我们可以利用这个URLUtil.guessFileName(url, null, null)
但这将给出呼叫装置为我的情况下的文件名,我有这样的
misc/dnload.php?t1=MzQ0MDA=&t2=MTY5NTUz&t3=MTY5NTUzMTMwMjEyMDNfcGhhcm1hY3kga2V5IGluZm8ucG5n&t4=MTMwMjEyMDM=
URL,以便从上面的链接,这将提取dnload.php为文件名称它不是原始文件名,我们下载它刚创建的那个文件的下载链接。
这里是利用这一点,我们可以得到的文件名,它只是一个额外的调用来获取信息,但实际上我们在网上下载,下载我用的Android内置的API下载管理器下载文件的代码。
Content-Disposition this is the attribute in header section through which we can get the file name as in attachment form.
它会返回信息像这样Content-Disposition: attachment; filename="fname.ext"
所以现在只需要解压的文件名
class GetFileInfo extends AsyncTask<String, Integer, String>
{
protected String doInBackground(String... urls)
{
URL url;
String filename = null;
try {
url = new URL(urls[0]);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
conn.setInstanceFollowRedirects(false);
String depo = conn.getHeaderField("Content-Disposition");
String depoSplit[] = depo.split("filename=");
filename = depoSplit[1].replace("filename=", "").replace("\"", "").trim();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
}
return filename;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute();
// use result as file name
}
}
你做一个HTTP请求来下载该文件。如果是这样,那么你可以从标题内容获取文件名。 – Raghunandan 2013-04-16 04:45:19