【发布时间】:2014-07-03 19:30:23
【问题描述】:
我想知道是否可以对特定 url 进行 ajax 发布请求并仅在请求时接收数据中的 zip 文件?或者我必须发送两个请求……一个是为了在已创建的服务器中获取 zip 文件的 url,另一个是为了下载 zip 文件?
【问题讨论】:
我想知道是否可以对特定 url 进行 ajax 发布请求并仅在请求时接收数据中的 zip 文件?或者我必须发送两个请求……一个是为了在已创建的服务器中获取 zip 文件的 url,另一个是为了下载 zip 文件?
【问题讨论】:
当然可以!但是只有新的浏览器支持这个。
var url = 'test.zip';
var filename = 'test.zip';
var request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'blob';
request.onload = function() {
var link = document.createElement('a');
document.body.appendChild(link);
link.href = window.URL.createObjectURL(request.response);
link.download = filename;
link.click();
};
request.send();
本机答案是否定的!
但是你可以这样做。
您的 ajax 请求:
$.ajax({
url: 'your-url-that-gives-zip-file.php',
dataType: 'JSON',
success: function(response){
if(response.zip) {
location.href = response.zip;
}
}
});
你的 php 文件:
<?php
//Get your zip file code with and combine with http://youradress.com
$zipFile = 'http://youraddress.com/downloads/'.$zipFile;
echo json_encode(array('zip' => $zipFile));
?>
【讨论】:
您无法使用 ajax 下载文件。
如果您只想要一个请求,那么放弃 ajax 并将隐藏的 iframe 附加到页面,并将 php 文件作为其源。
不过,这将限制您使用获取请求。
例如:
$('#id').click(function(){
$(body).append('<iframe style="display:none;" src="yourfile.php?key=value"></iframe>');
});
【讨论】: