php把生成的文件存放在指定目录

php把生成的文件存放在指定目录,第1张

PHP生成文件的时候,都可以执行到你希望存放的目录,例如(UNIX):

$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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12123863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存