作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望用户下载一个本地文件(在服务器上)。用户首先通过按下按钮开始文件创建,一旦文件准备好,他应该能够通过链接或按钮下载文件。
创建文件不是问题,因为我只是向后端发送 AJAX 调用,如下所示
@POST
@Path("/createFile")
@Produces("application/text")
@Consumes("application/json")
public String createFile(String argsFromPage) {
/*File creation code here*/
return "Path of file created";
}
现在,文件已创建,我想要的只是创建一个链接,用户可以单击该链接并下载该文件。目前,该文件可以是二进制文件或 CSV 文件。我曾多次尝试但没有成功
<button onclick='create_file()'>Create</button>
function create_file() {
$.ajax({
method : "POST",
url : ".path/to/backend/service",
contentType : "application/json",
data : JSON.stringify({
param1 : val1
})
}).done(function(data) {
console.log(data);
});
}
现在创建文件后,是否可以创建下载链接?更好的是,是否可以在文件创建后立即调用下载?这应该在浏览器中完成还是在后端完成?
跟进
文件下载后,如何从服务器上删除它?有什么办法可以让文件下载完成吗?
最佳答案
要创建文件的链接,您只需在 done()
处理程序中的 DOM 中创建一个 a
元素即可。试试这个:
function create_file() {
$.ajax({
method: "POST",
url: ".path/to/backend/service",
contentType: "application/json",
data: { param1: val1 } // I assume 'val1' is declared in a higher scope?
}).done(function(path) {
$('#someContainer').append('<a href="' + path.trim() + '">Click here to download</a>');
});
}
请注意,我删除了手动 JSON.stringify
调用,因为 jQuery 会为您执行此操作。另请注意,最好从 AJAX 请求返回 JSON,因为它可以避免空格问题,尽管根据您提供的代码示例,上述内容应该仍然有效。
关于javascript - 如何进行本地文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43591702/
我是一名优秀的程序员,十分优秀!