Heim >Backend-Entwicklung >PHP-Tutorial >php文件下载解决办法

php文件下载解决办法

WBOY
WBOYOriginal
2016-06-13 12:16:19927Durchsuche

php文件下载
下面是我在网上的找的代码,自己改了下:

down_file.php:

<?php<br /><br />if(!empty($_GET)){<br /><br />    header("Content-type: application/octet-stream ; charset=utf-8"); //输出类型 <br />	header("Content-Disposition:filename=".$name);<br />	header("Accept-Ranges: bytes"); //文件单位<br />	header("Accept-Length:".$filesize); //文件大小<br />	header("Content-Disposition: attachment; filename=".$name);//下载时显示的名字<br />$name=$_GET['name'];<br />	$url=$_GET['url'];<br /><br />	$f=fopen($url.$name, "r");<br />	$buffer=1024;<br />	$filesize=filesize($name);<br />	$downsize=0;<br />	$str="";<br />	while(!feof($f) && ($filesize-$downsize)>0){<br />		$downsize+=$buffer;<br />		echo fread($f,$buffer);<br /><br />	}<br />	//echo $str;<br />	fclose($f);<br /><br />}<br /><br />?>


html页面:
<!DOCTYPE html><br /><html><br />	<head><br />		<meta charset="utf-8"><br />		<title>Document</title><br />	</head><br />	<body><br />		<br />	<a href="down_file.php?name=a.jpg&url=./img/">下载a.jpg</a><br /><br />	</body><br /></html>


目的是下载a.jpg,
问题是点击后弹出窗口下载的是down_file.php而不是a.jpg。。如下图



求指点一下,能给个能用的代码更好了
------解决思路----------------------
    $name=$_GET['name'];
    $url=$_GET['url'];
    $filesize=filesize($url.$name);

这三句要放在上面,否则 header("Content-Disposition:filename=".$name); 会拿不到$name导致出notice.

改成这样
<br />if(!empty($_GET)){<br />    $name=$_GET['name'];<br />    $url=$_GET['url'];<br />    $filesize=filesize($url.$name);<br /><br />    header("Content-type: application/octet-stream ; charset=utf-8"); //输出类型 <br />    header("Content-Disposition:filename=".$name);<br />    header("Accept-Ranges: bytes"); //文件单位<br />    header("Accept-Length:".$filesize); //文件大小<br />    header("Content-Disposition: attachment; filename=".$name);//下载时显示的名字<br /><br /> <br />    $f=fopen($url.$name, "r");<br />    $buffer=1024;<br />    $downsize=0;<br />    $str="";<br />    while(!feof($f) && ($filesize-$downsize)>0){<br />        $downsize+=$buffer;<br />        echo fread($f,$buffer);<br /> <br />    }<br />    //echo $str;<br />    fclose($f);<br /> <br />}<br />

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn