php成功文件下载代码 (php成品)
本文目录导航:
php成功文件下载代码
繁难的文件下载只有要经常使用HTML的衔接标志<a>,并将属性href的URL值指定为下载的文件即可。
所示:<a href=””>下载文件</a>假设经过下面的代码成功文件下载,只能处置一些阅读器不能默意识别的MIME类型文件,例如当访问文件时,阅读器并没有间接关上,而是弹出一个下载揭示框,揭示用户“下载”还是“关上”等处置方式。
但假设须要下载后缀名为的网页文件、图片文件及PHP程序脚本文件等,经常使用这种衔接方式,则会将文件内容间接输入到阅读器中,并不会揭示用户下载。
为了提高文件的安保性,不宿愿在<a>标签中给出文件的链接,则必定向阅读器发送必要的头消息,以通知阅读器将要启动下载文件的处置。
PHP经常使用header()函数发送网页的头部消息给阅读器,该函数接纳一个头消息的字符串作为参数。
文件下载须要发送的头消息包含以下三局部,经过调用三次header()函数成功。
以下载图片为例,须要发送的头消息的所示: header(‘Content-Type:imge/gif); //发送指定文件MIME类型的头消息header(‘Content-Disposition:attachment; filename=””‘); //发送形容文件的头消息,附件和文件名header(‘Content-Length:3390′); //发送指定文件大小的消息,单位字节假设经常使用header()函数向阅读器发送了这三行头消息,图片就不会间接在阅读器中显示,而让阅读器将该文件构成下载的方式。
在函数header()中,“Content-Type”指定了文件的MIME类型,“Content_Disposition”用于文件的形容,值“attachment; filename=”””说明这是一个附件,并且指定了下载后的文件名,“Content_Length”则给出了被下载文件的大小。
设置完头部消息以后,须要将文件的内容输入到阅读器,以便启动下载。
可以经常使用PHP中的文件系统函数将文件内容读取进去后,间接输入给阅读器。
最繁难的是经常使用readfile()函数,将文件内容读取进去间接输入。
下载文件的所示:<?php$filename = ;header(Content-Type:image/gif); //指定下载文件类型header(Content-Disposition: attachment; filename=.$filename.); //指定下载文件的形容header(($filename)); //指定下载文件的大小 //将文件内容读取进去并间接输入,以便下载readfile($filename);?>下面假设碰到中文名字就会不可反常下载了,关于中文名字下载文件我又找到一个文件下载实例代码<?phpheader(Content-type:text/html;charset=utf-8);// $file_name=;$file_name=圣诞狂欢;//用以处置中文不能显示进去的疑问$file_name=iconv(utf-8,gb2312,$file_name);$file_sub_path=$_SERVERDOCUMENT_ROOT]/phpstudy/down/down/;$file_path=$file_sub_path.$file_name;//首先要判别给定的文件存在与否if(!file_exists($file_path)){echo 没有该文件文件;return ;}$fp=fopen($file_path,r);$file_size=filesize($file_path);//下载文件须要用到的头Header(Content-type: application/octet-stream);Header(Accept-Ranges: bytes);Header(Accept-Length:.$file_size);Header(Content-Disposition: attachment; filename=.$file_name);$buffer=1024;$file_count=0;//向阅读器前往数据while(!feof($fp) && $file_count<$file_size){$file_con=fread($fp,$buffer);$file_count+=$buffer;echo $file_con;}fclose($fp);?>header(Content-type:text/html;charset=utf-8)的作用:在主机照应阅读器的恳求时,通知阅读器以编码格局为UTF-8的编码显示该内容关于file_exists()函数不允许中文门路的疑问:由于php函数比拟早,不允许中文,所以假设被下载的文件名是中文的话,须要对其启动字符编码转换,否则file_exists()函数不能识别,可以经常使用iconv()函数启动编码转换$file_sub_path() 我经常使用的是相对门路,口头效率要比相对门路高 Header(Content-type: application/octet-stream)的作用:经过这句代码客户端阅读器就能知道服务端前往的文件方式Header(Accept-Ranges: bytes)的作用:通知客户端阅读器前往的文件大小是依照字节启动计算的Header(Accept-Length:.$file_size)的作用:通知阅读器前往的文件大小Header(Content-Disposition: attachment; filename=.$file_name)的作用:通知阅读器前往的文件的称号以上四个Header()是必需的 fclose($fp)可以把缓冲区内最后残余的数据输入到磁盘文件中,并监禁文件指针和无关的缓冲区
求一段html代码!下载文件到本地 就是指定一个链接。而后下载那个文件保留到电脑上
#region 下载文件/**//// <summary>/// 从FTP主机下载文件,经常使用与远程文件同名的文件名来保留文件/// </summary>/// <param>远程文件名</param>/// <param>本地门路</param>public bool DownloadFile(string RemoteFileName, string LocalPath){return DownloadFile(RemoteFileName, LocalPath, RemoteFileName);}/**//// <summary>/// 从FTP主机下载文件,指定本地门路和本地文件名/// </summary>/// <param>远程文件名</param>/// <param>本地门路</param>/// <param>保留文件的本地门路,前面带有\\</param>/// <param>保留本地的文件名</param>public bool DownloadFile(string RemoteFileName, string LocalPath, string LocalFileName){byte] bt = null;try{if (!IsValidFileChars(RemoteFileName) !IsValidFileChars(LocalFileName) !IsValidPathChars(LocalPath)){throw new Exception(合法文件名或目录名!);}if (!(LocalPath)){throw new Exception(本地文件门路不存在!);}string LocalFullPath = (LocalPath, LocalFileName);if ((LocalFullPath)){throw new Exception(以后门路下曾经存在同名文件!);}bt = DownloadFile(RemoteFileName);if (bt != null){FileStream stream = new FileStream(LocalFullPath, );(bt, 0, );();();return true;}else{return false;}}catch (Exception ep){ErrorMsg = ();throw ep;}}/**//// <summary>/// 从FTP主机下载文件,前往文件二进制数据/// </summary>/// <param>远程文件名</param>public byte] DownloadFile(string RemoteFileName){try{if (!IsValidFileChars(RemoteFileName)){throw new Exception(合法文件名或目录名!);}Response = Open(new Uri(() + RemoteFileName), );Stream Reader = ();MemoryStream mem = new MemoryStream(1024 * 500);byte] buffer = new byte1024];int bytesRead = 0;int TotalByteRead = 0;while (true){bytesRead = (buffer, 0, );TotalByteRead += bytesRead;if (bytesRead == 0)break;(buffer, 0, bytesRead);}if ( > 0){return ();}else{return null;}}catch (Exception ep){ErrorMsg = ();throw ep;}}#endregion
bat可以把图片链接依照想要的文件名保留成图片吗?
是的,BAT公司都领有弱小的技术才干,可以将图片链接保留为指定的文件名,详细方法如下:
将图片链接下载到本地计算机上,可以经常使用Python编程言语中的requests模块或其余http恳求模块成功。
口头以下代码将下载的图片保留为指定的文件名:
其中,url代表图片链接,filename代表指定的文件名,是图片的二进制数据。
口头终了后,将会在以后目录下生成一个名为指定文件名的图片文件。
须要留意的是,假设要批量下载多张图片,可以经常使用循环语句对下载的链接启动遍历,每次将下载的图片保留为指定的文件名即可。
文章评论