文件下载

两种方式解决下载问题:

方法一:使用a标签实现

将一个文件通过a标签的href进行链接:当用户点击的时候,浏览器不能识别该文件,就会变成下载。

A标签下载的问题

  1. 文件不能是任意文件:只有浏览器不能识别的文件才会当成附件下载;能识别会被直接打开;
  2. 文件必须是真实存在,而且一定会暴露文件的地址。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件下载</title>
</head>
<body>
    <a href='a.rar'>download</a>
</body>
</html>

方法二:php下载

Php本身没有能力实现下载:只有输出功能,将文件读取到内存,然后输出给浏览器。

PHP能够修改http协议:可以通过http协议告诉浏览器,当前内容不要直接打开,应该以附件的形式保存。

1.告诉浏览器:当前数据是二进制流,不要打开

header("Content-type: application/octet-stream")

2.告诉浏览器:应当以附件保存,还给出另存为的名字

3.header("Content-Disposition: attachment; filename=目标名字" )

Php直接输出内容即可:echo file_get_contents

<?php

    //PHP实现文件下载
    $file_name = "a.rar";

    //告诉浏览器:不要解析数据
    header("Content-type:application/octet-stream");

    //告诉浏览器:当做附件处理,给出建议名字
    header("Content-Disposition:attachment;filename=".$file_name);

    //输出数据
    readfile($file_name);
    
    //echo file_get_contents('test.txt');

 

posted @ 2015-10-04 16:09  lesuso  阅读(169)  评论(0编辑  收藏  举报