> php教程 > php手册 > 본문

php文件下载,

WBOY
풀어 주다: 2016-06-13 08:57:34
원래의
1447명이 탐색했습니다.

php文件下载,

  我们常常通过网页下载各种各样的文件,到底是怎样实现地呢?本文从php的角度,结合http相关内容对文件下载做出相关讨论。

  一般来说,通过超链接的方式可以直接下载文件。

<span><</span><span>a </span><span>href</span><span>='要下载的文件'</span><span>></span>点击下载<span></</span><span>a</span><span>><br /></span>
로그인 후 복사

  这一招可以应对很多格式的文件如.exe,.rar等格式,但是应对图片格式,html,txt等类型的文件,点击链接只会直接显示在浏览器上。那么如何应对这种情况呢?这时候就需要php出场了。

  在我有限的php编程经历中,遇到过两种php下载文件的形式。整体上都是利用通过设置响应的header 来实现文件下载。原理上没有本质的不同。

  第一种:

<em id="__mceDel"><span>$file_name='文件名'<span>;</span>
</span><span>header</span> ( 'Content-Disposition: attachment; filename=' . <span>basename</span> ( <span>$file_name</span><span> ));
</span><span>header</span> ( 'Content-Length: '.<span>filesize</span> ( <span>$file_name</span><span> ));
</span><span>readfile</span> ( <span>$file_name</span> );</em>
로그인 후 복사

  其中$filename设置的是下载文件的名称。 通过readfile()读入一个文件并且写入到输出缓存。

  第二种:

<span>$file_name</span>='要下载的文件名'<span>;


</span><span>$fp</span>=<span>fopen</span>(<span>$file_name</span>,"r+"<span>);
</span><span>$file_size</span>=<span>filesize</span>(<span>$file_name</span>);
<span>//header</span>("Content-type: application/octet-stream"<span>); //返回的文件类型
</span><span>//header</span>("Accept-Ranges: bytes"<span>);//按照字节格式返回</span>
<span>header</span>("Accept-Length: ".<span>$file_size</span><span>);
</span><span>header</span>("Content-Disposition: attachment; filename=".<span>$file_name</span><span>);</span>
<span>$buffer</span>=1024<span>;
</span><span>while</span>(!<span>feof</span>(<span>$fp</span><span>)){
    </span><span>$file_data</span>=<span>fread</span>(<span>$fp</span>,<span>$buffer</span><span>);
    </span><span>echo</span> <span>$file_data</span><span>;
}
</span><span>fclose</span>(<span>$fp</span>);
로그인 후 복사

  这种方式更加详细描述了下载文件的过程。

 

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿