我希望用户下载本地文件(在服务器上)。用户首先通过按下按钮开始创建文件,一旦文件准备就绪,他应该能够通过链接或按钮来下载文件。
创建文件不是问题,因为我只是向我的后端发送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);
});
}
现在,一旦创建了文件,是否可以创建下载链接?更好的是,是否可以在创建文件后立即调用下载?这应该在浏览器或后端完成吗?
跟进
文件下载后,如何从服务器上删除?有没有办法忍受文件下载已经完成?
答案 0 :(得分:1)
要创建指向该文件的链接,您只需在a
处理程序中的DOM中创建done()
元素即可。试试这个:
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,因为它避免了空白问题,尽管上面的代码示例仍然适用于您提供的代码示例。