如何使用浏览器从kubernetes容器内的文件夹下载文件?我们正在使用Java和K8

时间:2018-08-07 07:36:27

标签: java kubernetes google-kubernetes-engine

我们有一个Web应用程序,其中agnular.js中的客户端和java中的服务器。我们已经部署了此应用程序Docker容器。现在,我们的应用日志在位置 /var/tmp/logs.tar 中创建。

我们的用例是为最终用户提供下载此日志文件的工具,即logs.tar。目前,我们是在单击按钮时使用Blob八位字节流在客户端上提供此下载工具的。我们的问题是,如果此日志大小在某些GB中变得很大,则在流式传输时会在应用程序内存上造成负载。因此,我们要提供一种功能,而不是流式传输外部链接,而是通过单击按钮直接从中下载文件。我们希望使用代码作为应用程序功能来实现。

服务器端功能-

public File downloadLogs() {
        File file = null;
        try {
            executor.execute("/bin/sh", "-c", mcmProp.getKeyValue("download.log.script.location"));
            String filePath = "/var/tmp/logs.tar";
            file = new File(filePath);
            logger.debug("File exist for download");
            return file;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

客户端代码-

 this._service.downloadLogs().subscribe(
            success => {               
                var blb = new Blob([success], { 'type': "application/octet-stream" });
                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                    window.navigator.msSaveOrOpenBlob(blb, 'logs.tar');
                }
                else {
                    var link = document.createElement('a');
                    link.href = window.URL.createObjectURL(blb);
                    link.download = "logs.tar";
                    document.body.appendChild(link);
                    link.click();
                    document.body.removeChild(link);
                }
            });

0 个答案:

没有答案