php下载文件到本地
Ⅰ php执行file_put_contents后生成的文件如何自动下载到本地
file_put_contents只能生成文件在服务器上,无法读写客户端的文件系统,这是WEB的协议决定了的。
要想把file_put_contents生成在服务器上的文件发给浏览器用户,只有用下载的办法:文件生成到WEB可以访问的路径,然后使用<a href>建立链接让用户下载,示例代码:
file_put_contents('a.txt', $str);
echo '<a href=a.txt>下载文件</a>';
Ⅱ php导出excel表、压缩成文件下载到本地如何实现
你好!你所提出的三个问题.我没怎么看懂.如果以第二个为主.我倒可以说说我的看法.
一.如何把数据赋到excel中?
答:sorry.没怎么明白.见谅.
二.导出为excel表?
答:有两种方法实现.1.phpexcel.(稍显复杂)
2.简单的(我讲这个.简单^_^)直接上代码.自己改一下名字
和字段名.就成.
<?php
error_reporting(0);
//屏蔽警告和NOTICE等所有提示.包括error
Header(
"Content-type:
application/octet-stream
");
Header(
"Accept-Ranges:
bytes
");
Header(
"Content-type:application/vnd.ms-excel;charset=Big5");
//此处写编码,如,UTF-8....
Header(
"Content-Disposition:attachment;filename=abnormal_Report.xls
");
//自己写文件名
*.xls
require
"conn_mysql.php";
//连接mysql
$sql
=
"select
*
from
`netart`.`abnormal_records`
order
by
record_abtime
desc";
$result
=
mysql_query($sql,$conn);
echo
"<table
width='100%'
border='1'
>";
echo"<tr>";
echo
"<td
style='color:red'>
<font
size=4>
ID
</font></td>";
echo
"<td
style='color:red'>
<font
size=4>异常时间
</font></td>";
echo
"<td
style='color:red'>
<font
size=4>异常地点
</font></td>";
echo
"<td
style='color:red'>
<font
size=4>详细内容
</font></td>";
echo
"<td
style='color:red'>
<font
size=4>提交人
</font></td>";
echo
"<td
style='color:red'>
<font
size=4>提交时间
</font>
</td>";
echo
"</tr>";
while
($rs=mysql_fetch_array($result)){
echo
"<tr>";
echo
"<td
width='30'>
{$rs['record_id']}</td>";
//用width
控制表格的宽度.自己改变.
echo
"<td
width='150'>
{$rs['record_abtime']}</td>";
echo
"<td
width='80'>
{$rs['record_abplace']}</td>";
echo
"<td
width='700'>
{$rs['record_content']}
</td>";
echo
"<td
width='60'>
{$rs['record_username']}
</td>";
echo
"<td
width='120'>
{$rs['record_uptime']}
</td>";
echo
"</tr>";
}
echo
"</tbale>";
?>
//以上代码.自己去改一下名字.和字段名就可以运行了.
==========================================================================
下面的代码针对MSSQL:(基本跟
Mysql一样啦.只是改用了ODBC)
<?php
error_reporting(0);
Header(
"Content-type:
application/octet-stream");
Header(
"Accept-Ranges:
bytes
");
Header(
"Content-type:application/vnd.ms-excel;charset=Big5");
Header(
"Content-Disposition:attachment;filename=Syslog_view.xls
");
require
"conn_mssql.php";
session_start();
$flag1=@$_SESSION['flag_1'];
$flag2=@$_SESSION['flag_2'];
$flag3=@$_SESSION['flag_3'];
$content=@$_SESSION['content'];
$ip=@$_SESSION['ip'];
$content_2=@$_SESSION['content_2'];
$ip_2=@$_SESSION['ip_2'];
$time=@$_SESSION['time'];
if($flag1==1)
{
$sql_s="select
SysLog.DateTime,SysLog.IP,SysLog.Message
from
NetPerfMon.dbo.SysLog
where
IP='$ip'
and
convert(varchar(10),DateTime,120)='$time'
order
by
DateTime
desc";}
if($flag2==2)
{
$sql_s="select
SysLog.DateTime,SysLog.IP,SysLog.Message
from
NetPerfMon.dbo.SysLog
where
IP='$ip'
and
convert(varchar(10),DateTime,120)='$time'
order
by
DateTime
desc";}
if($flag3==3)
{$sql_s="select
SysLog.DateTime,SysLog.IP,SysLog.Message
from
NetPerfMon.dbo.SysLog
where
IP='$ip'
and
Message
like
'%$content%'
and
convert(varchar(10),DateTime,120)='$time'
order
by
DateTime
desc";}
$res=odbc_do($link,$sql_s);
echo
"<table
width='100%'
border='1'>";
echo"<tr>";
echo
"<td
style='color:red'>
<font
size=4>
DateTime
</font></td>";
echo
"<td
style='color:red'>
<font
size=4>
Switch
IP
</font></td>";
echo
"<td
style='color:red'>
<font
size=4>
Content</font></td>";
echo
"</tr>";
while
($rs=odbc_fetch_array($res))
{
echo
"<tr>";
echo
"<td
width='130'>
{$rs['DateTime']}</td>";
echo
"<td
width='110'>
{$rs['IP']}</td>";
echo
"<td
width='800'>
{$rs['Message']}</td>";
echo
"</tr>";
}
echo
"</tbale>";
session_stop();
?>
三.压缩成文件下载到本地?
答:此处也没怎么明白.因为,你做个按钮/链接至上面的代码.不就可以保存成excel到本地了..还要做什么压缩呢.
综:回答完毕.希望能帮到你.
Ⅲ php 怎么从服务器上直接下载文件到本地机器
各种 ftp上传工具都可以的啊
FileZilla ;FlashFXP; CuteFTP 等都行的
Ⅳ php 怎么从网上下载图片到本地
下载其实就是有这很多的头信息组成的一个页面!只要你在页面里面输出这些头信息就能下载了,头信息就是告诉浏览器我这个操作是下载,而不是打开,因为有些浏览器是直接在窗口打开图片,而有些浏览器是下载的,所以你需要定义一下头信息;
<?php
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=$downname");//$downname是下载后的文件名
readfile($imgname);//$imgname是你要下载的图片的路径
?>
Ⅳ php 如何将多张图片压缩下载到本地 ,详细一点,有案例更好!!谢谢各位了
php的压缩方式
<?php
$zip = zip_open("/tmp/test2.zip");
if ($zip) {
while ($zip_entry = zip_read($zip)) {
echo "Name: " . zip_entry_name($zip_entry) . "\n";
echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\n";
echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\n";
echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";
if (zip_entry_open($zip, $zip_entry, "r")) {
echo "File Contents:\n";
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
echo "$buf\n";
zip_entry_close($zip_entry);
}
echo "\n";
}
zip_close($zip);
}
?>
用php下载多张图片
<?php
set_time_limit(0);//设置PHP超时时间
$aImgList = array_unique($aImgList );
foreach($aImgList as $lists) {
file_put_contents(basename($lists), file_get_contents($lists));
}
?>
Ⅵ php如何下载动态图片保存到本地
php 远程下载文件
function http($url, $file="", $timeout=60) {
$file = empty($file) ? pathinfo($url,PATHINFO_BASENAME) : $file;
$dir = pathinfo($file,PATHINFO_DIRNAME);
!is_dir($dir) && @mkdir($dir,0755,true);
$url = str_replace(" ","%20",$url);
if(function_exists('curl_init')) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$temp = curl_exec($ch);
if(@file_put_contents($file, $temp) && !curl_error($ch)) {
return $file;
} else {
return false;
}
} else {
$opts = array(
"http"=>array(
"method"=>"GET",
"header"=>"",
"timeout"=>$timeout)
);
$context = stream_context_create($opts);
if(@($url, $file, $context)) {
//$http_response_header
return $file;
} else {
return false;
}
}
}
Ⅶ PHP典型模块与项目实战大全:PHP文件下载的原理及实现
PHP文件下载的原理及实现
通常文件下载过程是十分简单的 建立一个链接指向到目标文件就可以了 例如下面的链接
<a href=// xxx /xxx rar>点击下载文件</a>
但是 实际情况可能会稍复杂 比如需要用户填写完整注册信息后才可以下载该文件 这时最先想到的是使用Redirect的方式 下面介绍两种方式
( )用Redirect方式 先检查表格是否已经填写完毕和完整 然后将链接指到该文件 这样用户就可以下载 请看下面的示例代码
<?php
/*文件功能 检查变量form是否完整*/
if($form){
//重新定向浏览器指向
Header( Location: // // xxx /xxx rar )
exit;
}
?>
( )根据下载文件的序号来查找 链接的形式如下
<a href= // xxx /download php?id= >点击下载文件</a>
上面的链接使用ID方式接收要下载文件的编号 然后再用Redirect的方式连接到真实的文件链接
以上这两种方法虽然实现了文件的下载功能 但是缺点是直接暴露了文件所属的路径 而且没有防盗链的功能 所以上面的方式是简单直接但存在安全隐患的文件下载方式 在PHP中 通常是利用header()函数和fread()函数来实现安全的文件下载
例如 需要下载的是一个文件名为xxx rar的文件 首先创建文件是download php的PHP文件 通过前面的例子很容易通过文件的ID号从数据库中得到待下载文件的真实位置 在获得文件的真实存储位置后 可缺培悉以通过header()函数的location参数直接重定向到这个文件 但是这样仍然是不安全的 因为某些下载软件还是可以通过重定向分析获得该文件的位置信息 因此需要用另外一种方法 就是PHP的文件处理API函数 它是通过fread()函数把文件直接输出到浏览器提示用户下载 这样所有的处理都是在服务器端完成的 因此用户就无法获得文件具体存储位置信息的 示例代码如下
<?
$file_name = xxx rar ; //下载文件名
$file_dir = /up/ ;中纤 //下载文件存放目录
//检查文件是否存在
if (! file_exists ( $file_dir $file_name )) {
echo 文件找不到 ;
exit ()
} 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 $file_name ) )
fclose ( $file )
exit ()
}
?>
【代码解读】
上述代码中 程序发送Header信息是用来告诉Apache和浏览器下载文件的相关信息的 content type的含义代表文件MIME类型是文件流格式 如果在Apache配置里面把文件的MIME类型设为application/octet stream(如add application/octet stream xxx rar) 那么浏览器(客户端伏乎)就会知道 这是一个文件流格式的文件并提示用户下载 Accept Ranges是一个响应头标 它允许服务器指明将在给定的偏移和长度处 为资源组成部分的接受请求 该头标的值被理解为请求范围的度量单位 Content Length是指定包含于请求或响应中数据的字节长度 例如 Content Length: Content Disposition:attachment是用来告诉浏览器 文件是可以当做附件被下载 下载后的文件名称为$file_name该变量的值
运行download php文件 效果如图 所示 从图中可以看到文件按照预想的方式被提示下载 单击 保存 按钮将文件保存在本地
图 PHP文件安全下载
返回目录 PHP典型模块与项目实战大全
编辑推荐
Java Web开发详解
PHP Web开发学习实录
lishixin/Article/program/PHP/201311/21519
Ⅷ php 把图片下载本地保存到指定目录中
/*
*@$urlstring远程图片地址
*@$dirstring目录,可选,默认当前目录(相对路径)
*@$filenamestring新文件名,可选
*/
functionGrabImage($url,$dir='',$filename=''){
if(empty($url)){
returnfalse;
}
$ext=strrchr($url,'.');
if($ext!='.gif'&&$ext!=".jpg"&&$ext!=".bmp"){
echo"格式不支持!";
returnfalse;
}
//为空就当前目录
if(empty($dir))$dir='./';
//
$dir=realpath($dir);
//目录+文件
$filename=$dir.(empty($filename)?'/'.time().$ext:'/'.$filename);
//开始捕捉
ob_start();
readfile($url);
$img=ob_get_contents();
ob_end_clean();
$size=strlen($img);
$fp2=fopen($filename,"a");
fwrite($fp2,$img);
fclose($fp2);
return$filename;
}
//测试
GrabImage("此处网址/1.jpg","as.gif");
//PS:目录存在,权限判断,自创建等自己应该知道!
//个人喜欢绝对路径所以就那么写了
Ⅸ php中怎么实现文件下载功能
两种方法:
1.直接做个超链接,地址为文件的地址
<ahref="文件地址">下载</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=文件名称");
echofread($file,filesize('文件地址'));
fclose($file);
?>推荐第二种
因为第一种方法只能下载浏览器不能解析的文件,比如rar啊,脚本文件之类。如果文件是图片或者txt文档,就会直接在浏览器中打开。
而第二种方法是直接输出的文件流,不存在上述问题。
你可以检查一下你传值过来的路径是否正确,还有,流输出后面不要再进行任何操作了。
拓展资料:
集成开发环境是一种集成了软件开发过程中所需主要工具的集成开发环境,其功能包括但不仅限于代码高亮、代码补全、调试、构建、版本控制等。一些常见的PHP IDEs如下:
Zend Studio:商业版,Zend官方出品,基于eclipse
Eclipsewith PDT:免费
Coda:商业版,针对Mac用户
NetBeans:免费,功能强大
PHP Storm:商业版
AptanaStudio:免费
PhpEd:商业版
KomodoIDE/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
Ⅹ php如何将上传的文件下载到本地指定目录下
出于安全考虑,浏览器对本地文件是没有任何操作选择,所以下载时只能人为选择存放路径。可以考虑使用控件来实现