强制文件下载而不是显示在浏览器中
forced file to download instead showing in the browser
我只是想下载文件时,按钮被点击。我在jQuery中使用top.location.href
开始下载,但这段代码在本地主机上工作得很好,但是当我在服务器上尝试这个时,而不是开始下载它在浏览器中显示文件作为文本。
这就是我正在做的:
$('#download_button').click(function(){
var filepath = $(this).attr("data-src");
// filepath = library/files/filename.git
top.location.href = filepath; // open download dialog box
});
上面的代码开始下载我的自定义文件,其中包含'xml'数据在本地主机上打开一个对话框,但这段代码不能在服务器上工作。
我做错了什么吗?
我试着找出问题,但每个人都说在你的hyaccess文件中添加这行代码
<FilesMatch "'.(?i:git)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
但是我从来没有在我的服务器上找到htaccess文件。
试试这个代码
$('#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);
?>
可以使用HTML5下载属性
<a href="/something.git" download="name-of-file">Click to download</a>
相关文章:
- 有时数据是't显示在浏览器中
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 如何使用modalDialog来显示可以在所有浏览器中工作的弹出窗口
- 如何在用户按下F5键或单击浏览器时显示自定义的fancybox's后退/关闭按钮
- 如何通过ajax将png图片从服务器发送到浏览器中显示
- 在移动浏览器上显示大型文本文件
- Rails:如何在浏览器中显示动态html内容,而不会对其进行转义,也不会引起XSS攻击
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- Facebook如何在AJAX页面加载过程中显示浏览器加载进度
- 在网页中显示浏览器状态栏的内容
- 在图表上显示浏览器正在等待数据的推荐方法是什么?
- 只显示浏览器版本
- 为什么我不能使用JQuery 2显示浏览器版本?
- 延迟iframe加载,这样就不会显示浏览器加载指示
- 隐藏/显示浏览器选项卡的事件
- 如何在不显示浏览器窗口的情况下使用JavaScript打开并打印浏览器窗口的内容?
- Mozilla通知显示浏览器点击
- 有没有一种方法可以显示浏览器不支持的字体
- Angular js指令在表单中未保存数据时显示浏览器后退按钮的警报
- 如何在网页上显示浏览器已经下载了多少kb以显示该页