$fp=fopen("/tmp/abc.txt","W")
再如(WINDOWS):
file_put_contents('c:/tmp/abc.txt', '保存的内容')
一般需要注意两点,一是指定的目录需御乱消要是存在陪碰的,如镇知果目录不存在会报错,系统并不能够自动建立目录。二是对目录要有权限。
命令行模式下,或者web模式下保存的路径在服务器中,可以达到你的要求(有该路径的权限即可)
如果是在web模式下,不提示直接保存到访客的电脑中的某个位置,是不可以的。
web模式保存到客户端,只能通过下载,由用户指定,或保存到默认的下载目录。
以下是代码示例:
$dsn = 'mysql:dbname=testdbhost=127.0.0.1'$user = 'dbuser'
$password = 'dbpass'
//连接数据库 pdo
try {
$dbh = 消液new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"))
} catch (PDOException $e) 拿仿物{
echo 'Connection failed: ' . $e->getMessage()exit
}
//读取数据, 具体sql你根据情况修改
$stat = $dbh->prepare('SELECT * FROM `table` WHERE `id`>0 LIMIT 100'大敬)
$stat->execute()
$result = $stat->fetchAll(PDO::FETCH_ASSOC)
//创建csv文件并打开文件指针
$filepath='file.csv'
$fp = fopen($filepath, 'w')
//写入数据
foreach($result as $i=>$row){
//写入标题行
if($i==0){
fputcsv($fp, array_keys($row))
}
fputcsv($fp, $row)
}
//关闭文件指针
fclose($fp)
//把文件输出到下载
$file = fopen($filepath,"r") // 打开文件
$size=filesize($filepath)
Header("Content-type: application/octet-stream")
Header("Accept-Ranges: bytes")
Header("Accept-Length: ".$size)
Header("Content-Disposition: attachment filename=download.csv")
echo fread($file,$size)
fclose($file)
相关知识点:
PHP: fputcsv
PHP:PDO
数据库查询的时候只返回列名,防止列出现重复,csv里会有重复的数据
对文件的 *** 作仿兆,最好使用绝对路径,否老大穗则你会搞乱的好的习惯是,定义一个
define(ROOT,dirname(__FILE__))//当前文件的物侍卜理地址(结果可能是D:\\html\\)
然后写保存文件的时候,你的fname应该是ROOT . '/' . $filename
你的情况,可能是ROOT . '/myhtml/' . date('Y-m-d') . rand(0,999) . '.html'
如果输出它,它可能是d:\wwwroot\myhtml\2009-10-13\333.html
$of = fopen($fname,'w')
或者在php5下直接 file_put_contents($fname,$content)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)