如何解决有没有办法使用 spring-boot-admin 视图在端点读取操作中直接下载 FileSystemResource 返回类型的文件?
这是端点的示例代码
//readoperation inside @Endpoint
@ReadOperation
public FileSystemResource getCompressedFile(@selector String path){
File directory = new File(path);
//Creating archive file with .tar.gz extension.
return new FileSystemResource(path+"filename.tar.gz");
}
我可以通过从浏览器调用 api 直接下载文件。 现在我想从以代码为中心的 spring-boot-admin 视图 中获取它。
这是我对 js 的看法。
// Tried this call with other endpoint url's and it is working from axios calls.
// Except the following code which should download the file.
// This works when I use wiremock and download the file for testing purpose.
// But fails in real world scenario
async downloadLogs(){
try{
await this.instance.axios({
method: "get",url:"/actuator/logs",params: { 'path': '/working/path' },responseType:'blob'
}).then((response)=>{
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download','Logfile.tar.gz');
document.body.appendChild(link);
link.click();
}
);
}
catch(error){
console.log(error);
this.error = {
message: "Failed to download compressed file",errorMessage: error.message
}
}
}
即使返回 200 状态,此调用也不会下载日志。
我尝试了以下链接中提到的各种内容
还尝试在此处复制 heapdump 那样的按钮:https://github.com/codecentric/spring-boot-admin/blob/875cc286a4be089aa5f39c8b54a99405beba2f92/spring-boot-admin-server-ui/src/main/frontend/views/instances/heapdump/index.vue#L26 .
我似乎仍然无法下载。 我检查了响应,它与我在邮递员中获得的数据不匹配。 来自 SBA 的响应数据是这样的。
<!DOCTYPE html><html><head><base href="https://springbootadmin.example.site.net/"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="format-detection" content="telephone=no,email=no"><meta name="theme-color" content="#42d3a5"><link rel="preload" href="extensions/ibus/css/ibus.40870333.css" as="style"><link rel="preload" href="extensions/ibus/js/ibus.749714cb.js" as="script"><link href="extensions/ibus/css/ibus.40870333.css" rel="stylesheet"><link rel="shortcut icon" href="assets/img/favicon.png" type="image/png"><title>Spring Boot Admin</title><link href="assets/css/chunk-common.d53d578b.css" rel="preload" as="style"><link href="assets/css/sba-core.ba8250f6.css" rel="preload" as="style"><link href="assets/js/chunk-common.995886c3.js" rel="preload" as="script"><link href="assets/js/chunk-vendors.ef23718c.js" rel="preload" as="script"><link href="assets/js/sba-core.cfd20c10.js" rel="preload" as="script"><link href="assets/css/chunk-common.d53d578b.css" rel="stylesheet"><link href="assets/css/sba-core.ba8250f6.css" rel="stylesheet"></head><body><div id="app"></div><script lang="javascript" src="sba-settings.js"></script><script lang="javascript" src="extensions/ibus/js/ibus.749714cb.js"></script><script src="assets/js/chunk-vendors.ef23718c.js"></script><script src="assets/js/chunk-common.995886c3.js"></script><script src="assets/js/sba-core.cfd20c10.js"></script></body></html>
有什么办法可以从 SBA 视图中的给定路径中下载文件。 任何采用路径然后返回路径中的文件的方法(.tar.gz 文件路径)例如:/tmp/logfile.tar.gz 也会有所帮助。
注意:当直接从浏览器调用现有 api 时,它已经要求选择保存或打开文件。我正在从 axios get 请求调用相同的 api。而且我无法选择使用 href:我已经尝试过了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。