onDownloadStart параметры веб-просмотра не установлены? Как получить имя файла? - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть код JavaScript, где я использую атрибут загрузки тега привязки, чтобы установить имя файла. Ниже приведен мой фрагмент кода:

const fileReader = new FileReader();
fileReader.onload = () => {
const link = <HTMLAnchorElement>windowService.document.createElement("a");
link.href = fileReader.result;
link.setAttribute("download", fileName);
link.target = "_blank";

windowService.document.body.appendChild(link);
link.click();
};
fileReader.readAsDataURL(testFile);
}

где testFile - это блок данных. Этот код прекрасно работает со всеми браузерами, iOS-приложением, но не с Android-приложением. В Android WebView вызывается функция onDownloadListener и задается только параметр url, а другие параметры не устанавливаются.

    webView.setDownloadListener(new DownloadListener() {
                @Override
                public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
// url: set as base64 encoded content
// no other attribute is set. I understand content disposition can be used to get file name but that is not set either
}
}

Я хочу получить имя файла, присвоенное файлу в атрибуте загрузки якоря. Как я могу получить имя файла для того же? Я использую Android API 28 для тестирования.

1 Ответ

0 голосов
/ 10 сентября 2018

Я использовал URLUtil хорошо и легко работать

webView.setDownloadListener(new DownloadListener() {
        @Override
        public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
            String filename = URLUtil.guessFileName(url, contentDisposition, mimetype);
            Toast.makeText(MainActivity.this, filename, Toast.LENGTH_SHORT).show();
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...