[英]Create CSV File in PHP and Save to SFTP using phpseclib
我需要从MySQL
查询生成CSV
文件,然后将文件保存到SFTP
服务器。 我尝试了下面的代码。 CSV
文件已创建,但为空。 我还在浏览器中收到一条Warning: is_file() expects parameter 1 to be a valid path, resource given
消息, Warning: is_file() expects parameter 1 to be a valid path, resource given
为此行提供的Warning: is_file() expects parameter 1 to be a valid path, resource given
$sftp->put($fileName, $fp, NET_SFTP_LOCAL_FILE);
。 如果我移动fclose($fp);
到最后一行,我没有收到错误,但是数据仍然没有出现在文件中。 有人可以让我知道如何将数据保存到创建的文件中吗?
$fileName = 'dataFiles/reports/Report Summary/Report Summary.csv';
$sql = mysqli_query($db, "
SELECT *
FROM reports
WHERE reportID = 1
");
$fp = fopen('php://output', 'w');
$first = true;
while($row = mysqli_fetch_assoc($sql)){
if ($first) {
fputcsv($fp, array_keys($row));
$first = false;
}
fputcsv($fp, $row);
}
fclose($fp);
$sftp->put($fileName, $fp, NET_SFTP_LOCAL_FILE);
第二个参数不是句柄,而是直接的内容。
我认为您可以做到: stream_get_contents($fp);
在第二个参数中。
$content = stream_get_contents($fp);
fclose($fp);
$sftp->put($fileName, $content, NET_SFTP_LOCAL_FILE);
尝试这样的事情:
<?php
$fp = fopen('php://temp', 'r+');
// do stuff
rewind($fp);
$sftp->put($filename, $fp);
phpseclib(假设您使用的是足够新的版本)将检测到第二个参数是流资源,并将尝试从中读取相应的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.