我只想在点击按钮时下载文件。我在jQuery中使用top.location.href
开始下载,但是这个代码在localhost上工作正常,但是当我在服务器上尝试这个时,而不是开始下载它在浏览器中将文件显示为文本。
这就是我在做的事情:
$('#download_button').click(function(){
var filepath = $(this).attr("data-src");
// filepath = library/files/filename.git
top.location.href = filepath; // open download dialog box
});
上面的代码通过打开localhost上的对话框开始下载包含'xml'数据的自定义文件,但此代码在服务器上不起作用。
我做错了什么?
我试图找出问题,但每个人都说在你的hyaccess文件中添加这些代码
<FilesMatch "\.(?i:git)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
但我从未在服务器上找到htaccess文件。我可以在我的目录中创建一个新文件并将其添加到其中吗?
答案 0 :(得分:1)
<a href="/something.git" download="name-of-file">Click to download</a>
答案 1 :(得分:1)
试试这段代码
$('#download_button').click(function(){
var filepath = $(this).attr("data-src");
// filepath = library/files/filename.git
var url = 'library/files/download.php';
var inputfied = '<input type="text" name="filepath" value="' + filepath + '" />';
var form = $('<form action="' + url + '" method="POST" >' +inputfied +'</form>');
$('body').append(form);
$(form).submit();
});
并使用此页面download.php
<?php
$file=$_POST['filepath'] ;//file location;
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Length: ' . filesize($file));
readfile($file);
?>