Android下载文件如何通过URL获取文件名

前言

今天项目有需求下载文件获取文件名,做这个需求以前都是让后台把下载地址和文件名,包含后缀名直接发过来,结果这几天后台只发了下载地址,我也懒得麻烦人家,就查了查资料解决了一下

方案

try {
         URL url = new URL(url);
         HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
         urlConnection.setRequestMethod("GET");
         urlConnection.connect();
         int code = urlConnection.getResponseCode();
         if (code == HttpURLConnection.HTTP_OK) {
               // 通过Content-Disposition获取文件名,这点跟服务器有关,需要灵活变通
                String fileName = urlConnection.getHeaderField("Content-Disposition");
                if (fileName == null || fileName.length() < 1) {
                      // 通过截取URL来获取文件名
                     URL url2 = urlConnection.getURL();// 获得实际下载文件的URL
                     String file1 = url2.getFile();
                     fileName = file1.substring(fileName.lastIndexOf("/") + 1);
                } else {
                     fileName = URLDecoder.decode(fileName.substring(fileName.indexOf("filename=") + 9), "UTF-8");
                     // 有些文件名会被包含在""里面,所以要去掉,不然无法读取文件后缀
                    fileName = fileName.replace("\"", "");
                }
 
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

这样一来,只依靠一个URL链接,就能获得到文件名。

你可能感兴趣的:(Android下载文件如何通过URL获取文件名)