php中怎么实现文件下载功能?

第一个页:<?phpheader("content-type:text/html;charset=utf-8");$arr=scandir("./up");echo"<t... 第一个页:
<?php
header("content-type:text/html;charset=utf-8");
$arr=scandir("./up");
echo "<table border='1' cellpadding='0' cellspacing='0' align='center'><tr bgcolor='#33ff33'><td>序号</td><td>文件名</td></tr>";
$i=0;
foreach ($arr as $temp){
echo "<tr>";
echo "<td>".$i."</td><td><a href='dowlong.php?temp=/up/$temp'>".$temp."</a></td>";
echo "</tr>";
$i=$i+1;
}
echo "<table>";
?>
第二个页:
<?php
header("content-type:text/html;charset=utf-8");
$fil_name=$_GET["temp"];
$file_dir="/up/";
if(!file_exists($file_dir.$file_name)){
echo "<script>alert('NOT FOND');</script>";

}else{
$file=fopen($file_dir.$file_name,"r");
Header("Content-type:application/octet-stream");
Header("Accept-Ranges:bytes");
Header("Accept-Length:".filesize($file_dir.$file_name));
Header("Content-Disposition:attachment;filename=".$file_name);
echo fread($file,filesize($file_dir.$fil_name));
fclose($file);
echo "<script>alert('下载完成');window.location.href='text.php';</script>";
exit();
}
?>
请问我哪个写错了吗?怎么实现不了下载功能呢?那个只支持.rar格式的文件下载吗?我想要一个通用班的下载方法。谢谢!
展开
 我来答
深眠者
高粉答主

推荐于2019-08-19 · 每个回答都超有意思的
知道答主
回答量:40
采纳率:0%
帮助的人:8810
展开全部

两种方法:

1.直接做个超链接,地址为文件的地址

<a href="文件地址">下载</a>

2.流输出

<?php

$file=fopen('文件地址',"r");

header("Content-Type: application/octet-stream");

header("Accept-Ranges: bytes");

header("Accept-Length: ".filesize('文件地址'));

header("Content-Disposition: attachment; filename=文件名称");

echo fread($file,filesize('文件地址'));

fclose($file);

?>

推荐第二种

因为第一种方法只能下载浏览器不能解析的文件,比如rar啊,脚本文件之类。如果文件是图片或者txt文档,就会直接在浏览器中打开。

而第二种方法是直接输出的文件流,不存在上述问题。

你可以检查一下你传值过来的路径是否正确,还有,流输出后面不要再进行任何操作了。

拓展资料:

集成开发环境是一种集成了软件开发过程中所需主要工具的集成开发环境,其功能包括但不仅限于代码高亮、代码补全、调试、构建、版本控制等。一些常见的PHP IDEs如下:

  • Zend Studio:商业版,Zend官方出品,基于eclipse

  • Eclipse with PDT:免费

  • Coda:商业版,针对Mac用户

  • NetBeans:免费,功能强大

  • PHP Storm:商业版

  • Aptana Studio:免费

  • PhpEd:商业版

  • Komodo IDE/Edit:IDE为商业版,Edit可免费使用

  • Adobe Dreamweaver:商业版

  • 除去集成开发环境,具备代码高亮功能的常见文本编辑器因其轻巧灵活也常被选作开发工具,例如:Notepad++、Editplus、SublimeText、Everedit(国人开发)等等。

PHP的特性包括:

1. PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。

2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,

PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;

PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。

3. PHP支持几乎所有流行的数据库以及操作系统。

4. 最重要的是PHP可以用C、C++进行程序的扩展!

参考资料:百度百科:PHP

百度网友f8b6ee5
高粉答主

推荐于2019-10-20 · 说的都是干货,快来关注
知道小有建树答主
回答量:313
采纳率:100%
帮助的人:9.1万
展开全部

<?php  if ($_GET[xfer]) {  if ($_POST[from] == "") {  print "You forgot to enter a url.";  } else {  copy("$_POST[from]", "$_POST[to]"); 

$size = round((filesize($_POST[to])/1000000), 3);

print "transfer complete.<br>  <a><a href=\"$_POST[from]\">$_POST[from]</a><br>  <a><a href=\"$_POST[to]\">$_POST[to]</a> : $size MB"; 

}  } else {  print "<form action=\"$PHP_SELF?xfer=true\" method=post>  from(http://): <input name=from><br>  to(filename): <input name=to><br>  <input type=submit value=\"transload\">";  }  ?>  

echo httpcopy(http://www.baidu.com/img/baidu_sylogo1.gif);

function httpcopy($url, $file=, $timeout=60) {             $file = empty($file) ?

pathinfo($url,PATHINFO_BASENAME)。

拓展资料:


ob_end_clean();    

//r: 以只读方式打开,b: 强制使用二进制模式
$fileHandle=fopen($filePath,"rb");
if($fileHandle===false){        echo "Can not find file: $filePath\n";        exit;
}

Header("Content-type: application/octet-stream")
Header("Content-Transfer-Encoding: binary")
Header("Accept-Ranges: bytes");


Header("Content-Length: ".filesize($filePath))
Header("Content-Disposition: attachment; filename=\"$saveAsFileName\"")
while(!feof($fileHandle)) {


//从文件指针 handle 读取最多 length 个字节
echo fread($fileHandle, 32768);
}
fclose($fileHandle);
}

$file = fopen($url,"r"); // 打开文件
// 输入文件标签
header('Content-Encoding: utf-8')
header("Content-type: application/octet-stream")
header("Accept-Ranges: bytes");


header("Accept-Length: ".filesize($url));
header('Content-Transfer-Encoding: binary' );
header("Content-Disposition: attachment; filename=" .$fname); //以真实文件名提供给浏览器下载


header('Pragma: no-cache')
header('Expires: 0')
//输出文件内容
echo fread($file,filesize($url));
fclose($file);
}。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友00b994d
2020-04-15
知道答主
回答量:4
采纳率:0%
帮助的人:2330
展开全部
先创建一个index.html文件,输入以下内容:
<input type="button" onclick="window.location.href='download.php'" value="点击下载">
他的功能是显示一个按钮,点他后他就打开服务器的的download.php文件
再创建一个download.php文件,内容如下:
<?php
$file_name = "download";
$file_name = "download.zip"; //下载文件名
$file_dir = "./download/"; //下载文件存放目录
//检查文件是否存在
if (! file_exists ( $file_dir . $file_name )) {
header('HTTP/1.1 404 NOT FOUND');
} else {
//以只读和二进制模式打开文件
$file = fopen ( $file_dir . $file_name, "rb" );
//告诉浏览器这是一个文件流格式的文件
Header ( "Content-type: application/octet-stream" );
//请求范围的度量单位
Header ( "Accept-Ranges: bytes" );
//Content-Length是指定包含于请求或响应中数据的字节长度
Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) );
//用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
Header ( "Content-Disposition: attachment; filename=" . $file_name );
//读取文件内容并直接输出到浏览器
echo fread ( $file, filesize ( $file_dir . $file_name ) );
fclose ( $file );
exit ();
}
他的功能是寻找服务器内的download文件夹,并下载内部的download.zip文件
最后再创建一个名叫download的文件夹,把名叫download.zip压缩包文件放进download文件夹内,就可以了(也可以是别的名,别的文件后缀,但是要修改download.php文件代码)
注意:index.html,download.php,download这三个文件必须在同一个目录下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiii130
2015-05-14 · 知道合伙人软件行家
xiii130
知道合伙人软件行家
采纳数:817 获赞数:2867
爱好编程,在工作中积累了比较丰富的经验。愿与大家共同进步。

向TA提问 私信TA
展开全部

2种方法

1直接做个超链接,地址为文件的地址

<a href="文件地址">下载</a>

    

2流输出

<?php
$file=fopen('文件地址',"r");
header("Content-Type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: ".filesize('文件地址'));
header("Content-Disposition: attachment; filename=文件名称");
echo fread($file,filesize('文件地址'));
fclose($file);
?>

   


推荐第二种


因为第一种方法只能下载浏览器不能解析的文件,比如rar啊,脚本文件之类。如果文件是图片或者txt文档,就会直接在浏览器中打开


而第二种方法是直接输出的文件流,不存在上述问题


你可以检查一下你传值过来的路径是否正确,还有,流输出后面不要再进行任何操作了

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式