下载功能不起作用
Download function doesn't work
我有一个下载功能的问题。在我的系统中,我喜欢进行安全下载。在我的根文件不能通过url访问。我将ftp权限设置为700。只有服务器可以访问。之后,我做了一个可以为用户下载文件的功能。此时,我可以对会话进行安全检查。
但是当服务器通过这段代码下载文件时,该文件在浏览器中打开。使用exe时,浏览器会显示奇怪的字母。
// Bestandsnaam
$file = 'bestanden/test.exe';
// Ophalen bestand
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
我想要一个保存框当用户访问url。
我想这样使用这个函数:
<a href="www.site.nl/downloadfunction/file">download</a>
有人有解决办法吗?我尝试了Javascript document.execCommand('SaveAs',null,bestand);
而不是readfile但它在Firefox中不起作用。
谢谢你的帮助!
尝试将ob_clean
置于标题之上。如果这些标头在当前代码中成功发送,我甚至怀疑您是否需要ob_clean.
在头函数之前的输出中可能有一些字符,因为代码看起来是正确的。在这种情况下,您还应该将error_display
设置为关闭,否则您应该收到警告。
检查在if
之后的headers_sent函数。
我使用完全相同的代码,它工作得很好。
然而,客户端做什么取决于浏览器的参数。如果文件类型在浏览器中被设置为"总是打开",并且默认的下载动作是"下载无需询问",它将1)下载默认下载文件夹中的文件,2)打开它。您只需勾选"下载前询问每个文件的保存位置"即可获得此框。
使用下载帮助器:
function process($file)
{
$this->load->helper('download');
$data = file_get_contents("my-downloads/$file"); // Read the file's contents
force_download($file, $data);
}
应该照顾细节(头,mime类型检测),否则你需要摆弄。
如果您对细节感兴趣,可以获得源代码。
相关文章:
- 使用复杂数组时Jquery自动完成功能不起作用
- 为什么我的流星每个功能都不起作用
- jQuery点击功能在获取请求后不起作用
- 切换功能不起作用
- 为什么不是'我的修剪功能不起作用
- Angular UI Select2指令搜索功能不起作用
- j查询点击功能在手风琴菜单链接上不起作用
- 为什么这个排序功能在 Safari 中不起作用
- 控制器功能在 Angular.js 中不起作用
- AngularJS 路由功能不起作用
- JavaScript更新功能不起作用
- ScriptX 打印功能在 IE8 中不起作用
- JS表单验证功能不起作用
- 本地存储功能中的图像不起作用
- 复选框树视图功能不起作用
- Web音频-AudioParam调度功能不起作用
- 功能的禁用/启用按钮;不起作用
- JavaScript/jQuery:获取选择功能在Firefox和Chrome中不起作用
- 复选框单击功能不起作用
- Ckeditor插件功能在使用setData(“hai”)之后不起作用;