Android下载文件,如何获取实际的文件名

1. 前言


之前APP实现下载文件的功能,都是让后台把下载地址和文件名(包含文件后缀名)传过来。不过近日后台只传了下载地址,我懒得麻烦人家也把文件名传来,所以就自己查资料,想方法解决。


2. 解决方案


解决的办法如下面的代码所示,目前还算能满足要求,如果大伙们有更好的方法,可以在评论说一声。



        HttpURLConnection connection = null;
        int code = 0;
		
        connection = (HttpURLConnection) new URL(url).openConnection();
        connection.setRequestMethod("GET");
        connection.setConnectTimeout(8 * 1000);
        connection.setReadTimeout(8 * 1000);
        connection.connect();

        code = connection.getResponseCode();

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


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值