2017-01-17 44 views
1

我有下面的代码:电话API REST和zip文件下载到计算机

jQuery.ajax({ 
    type: "GET", 
    url: "http://localhost:8081/myservicethatcontainsazipfile",  
    contentType:'application/zip', 
    success: function (response) { 
     console.log("Successful"); 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     console.log("Error."); 
    } 
}); 

根据AJAX的规格,你不能直接将文件下载到计算机(安全原因) ,所以我想知道如何直接从客户端下载此文件,而无需创建并单击一个html元素和类似的选项?

+0

浏览器会自动下载文件(下载后关闭窗口开始),如果你告诉客户端的浏览器去那个页面:'window.open('http:// localhost:8081/myservicethathatcontainsazipfile')' – Adam

回答

0

你不能用AJAX做到这一点。但是,您可以重定向/打开一个将用户带到文件页面的新窗口,该窗口将自动开始下载。

如果你不想要任何按钮,你可以使用这些JavaScript代码中的一行。

window.open(download_url, '_blank')

window.location = 'download_url'

采取注意,出于安全考虑,您将需要在开始下载前等待至少3-5秒。

setTimeout(() => window.location = 'download_url', 5000); 

你也应该看看How to start automatic download of a file in Internet Explorer?

+0

我需要传递一个url作为参数还是只能存储我的zip并发送它? – Pablo

+0

@Pablo你唯一的参数是到下载页面的URL。如果你可以在没有任何JavaScript代码的情况下找到它,那么你可以重定向到它 – zurfyx

+0

这对我来说不起作用(手动操作),也许与CORS扩展有关? (chrome) – Pablo