WebView的onDownloadStart参数未设置?如何检索文件名?

时间:2018-09-09 18:33:31

标签: javascript java android android-webview

我有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 :(得分:0)

我曾经使用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();
        }
    });