在public / templates / calendar.html中我有
<a href="" id="secret_download_button" style="display:none" download="">
在同一个文件中,我有一个按钮(下载qr),我从javascript进行ajax调用,qr在/ public / uploads / thumbs / qrcodes /&#39; filename&#39;中创建。 完成ajax调用并调用以下函数,该函数位于
中公共/ JavaScript的/ some.js
function (data) {
$('#secret_download_button').attr('href',data.content);
$('#secret_download_button').attr('download','somename');
$('#secret_download_button').click();
});
data.content = public / upload / thumbs / qrcodes / someqr.png(example)
我需要使用相对路径,而不是绝对路径。我究竟做错了什么 ?我猜我正在设置错误路径错误。 另外,从我在线阅读的内容来看,IE不支持此解决方案。是否有另一种更简单,更优雅的方法(我需要能够指定将要下载的文件的名称)
最终解决了服务器端问题。谢谢。对于其他有同样问题的人我用过这个:
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($activity_name . '.png').'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($root . $path . $file_name));
readfile($root . $path . $file_name);
exit;
答案 0 :(得分:10)
你是对的,IE 和Edge 不支持下载属性(Edge 13+支持):http://caniuse.com/#feat=download
要拥有跨浏览器解决方案,您必须在当前窗口中打开网址:
function (data) {
window.location.href = data.content;
});
或新窗口:
function (data) {
window.open(data.content);
});
两个限制: