android - 在 Android 中使用 DownloadManager 从标题中获取文件名

标签 android android-download-manager

我正在使用 DownloadManager 从 url 下载视频文件。

问题是如果我使用默认文件夹下载文件,我在图库中看不到视频。

此外,如果我尝试使用此方法:

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, 'filename');

下载之前需要知道文件名,在这种情况下,我不知道

而且,我在 url 中没有文件名。

如何从标题中获取文件名并将名称传递给方法 setDestinationInExternalPublicDir ? 其他选择?

最佳答案

如果有人想要执行 HEAD 请求以获取文件名:

class GetFileName extends AsyncTask<String, Integer, String>
{
    protected String doInBackground(String... urls)
    {
        URL url;
        String filename = null;
        try {
            url = new URL(urls[0]);
            String cookie = CookieManager.getInstance().getCookie(urls[0]);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestProperty("Cookie", cookie);
            con.setRequestMethod("HEAD");
            con.setInstanceFollowRedirects(false);
            con.connect();

            String content = con.getHeaderField("Content-Disposition");
            String contentSplit[] = content.split("filename=");
            filename = contentSplit[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) {

    }
}

关于android - 在 Android 中使用 DownloadManager 从标题中获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23069965/

相关文章:

Android FileOutputStream 在 api 级别 22 中返回 FileNotFoundException

java - 如何上传图片到dropbox?

java - 在 000webhost 服务器上上传时,每个循环都不会执行

android - 无法播放下载的.mp3文件

android2.3 下载管理器

Android:检测何时安装了应用程序

Android 下载管理器最终完成

android - Espresso Intent 测试中 stubAllExternalIntents() 的用途

android - Firebase 崩溃报告错误 : client application com. xxxx 被阻止

android - 在 openCV 上使用 CameraBridgeViewBase 拍照