在php编程中,使用其header函数实现文件的下载,以PDF为例:
//outputting a PDF
header('Content-type: application/pdf');
//called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// The PDF source is in original.pdf
readfile('original.pdf');
?>
代码说明:
对于第一句,是必须的,只要改一下文档的类型就行,例如下载txt文件,那就改为header(’Content-type: application/txt’);,
第二句,为下载文档起一个名字,如果是txt文件的话,可以改为header(’Content-Disposition: attachment; filename=”downloaded.txt”‘);,
第三句,readfile这个函数就是读取一个文件然后输出,这里文件的路径需要是真实的文件路径,如果是downloads文件夹下面的一个original.txt文件,可以这样写readfile(’downloads/original.txt’);,而如果提交的页面会输出文本等字符,那么下载到的文件会是原文件original.txt和提交的页面输出的文字的混合文件。
PHP下载函数。
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="UTF-8" />
<title>php文件下载_www.</title>
</head>
<form method="post">
<input name="url" size="20" />
<input name="submit" type="submit" />
<!-- <input type="hidden" name="MAX_FILE_SIZE" value="2097152" />-->
</form>
<?php
set_time_limit(24*60*60);
if (!isset()($_POST['submit'])) die ();
$destination_folder = './down/'; // 文件夹保存下载文件。必须以斜杠结尾
$url = $_POST['url'];
$newfname = $destination_folder.basename($url);
$file = fopen($url, "rb");
if ($file) {
$newf = fopen($newfname, "wb");
if ($newf) while (!feof($file)) {
fwrite($newf, fread($file, 1024*8), 1024*8);
}
}
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
?>
代码比较简单,适合刚刚接触php文件操作的朋友,有利于快速掌握有关php文件下载的知识。
1,页面部分 index.php
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件上传下载-www.</title>
</head>
<body>
<form action="/blog_article/upload_file.html" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="hidden" name="max_file_size" value="1000000000">
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Submit" />
</form>
<br/>
<br/>
<table width="400" border="1">
<?php
$dir = 'upload/';
if(is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file!="." && $file!="..") {
echo "<tr><td><a href='".$dir.$file."'>".$file."</a></td></tr>";
}
}
closedir($dh);
}
}
?>
</table>
</body>
</html>
2,上传文件源代码 upload_file.php
<?php
/**
* 文件上传与下载
* edit www.
*/
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
//下载文件
header('HTTP/1.1 301 Moved Permanently');
header('Location:files.php');
?>