簡體   English   中英

在PHP中創建CSV文件並使用phpseclib保存到SFTP

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM