我想使用下面的脚本将存储为blob数据的pdf文件添加到ZIP。
我得到两个我不理解的错误
警告:file_put_contents(ATPstatement201203.pdf)[function.file-put-contents]:无法打开流:权限被拒绝
和
注意:ZipArchive :: addFile()[ziparchive.addfile]:作为文件名的空字符串
我不知道我做错了什么?
$TP_Month =''.$_POST["tp_year"].''.$_POST["tp_month"].'';
$TP_format =$TP_Month;
echo $_POST["ids"];
$zip = new ZipArchive;
$zip->open('file.zip', ZipArchive::CREATE);
foreach( explode( ',', $_POST["ids"]) as $Client_ID)
{
$sql_qry="select *
from ca_client_statement
where client_id='".$Client_ID."' and trading_period_month like '".$TP_Month."'";
$sql_err_no=sql_select($sql_qry,$sql_res,$sql_row_count,$sql_err,$sql_uerr);
$row = mysql_fetch_assoc($sql_res);
$file_content = $row['pdf_statement'];
$file_name = ''.$Client_ID.'statement'.$TP_format.'.pdf';
$file=file_put_contents($file_name, $file_content);
$zip->addFile($file);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=filename.zip');
header('Content-Length: ' . filesize($zipfilename));
readfile($zipname);
答案 0 :(得分:3)
“权限被拒绝”表示Web服务器没有权限写入您尝试将文件保存到的位置。您必须从命令行使用chmod
将权限更改为您尝试写入的目录(如果您使用的是Linux)。
作为错误的证据,您可以执行chmod 777 /path/to/your/save/location
,但保持权限大开不是一个好主意,您应该将其重拨回644
左右
你得到“空字符串作为文件名”因为file_get_contents()
失败(带有上述错误),当它失败时,它返回布尔false
(按照the docs }),(显然)被解释为空字符串文件名。