gpt4 book ai didi

php - 不使用中间文件将内存中的数据传输到FTP服务器

转载 作者:行者123 更新时间:2023-12-02 21:21:50 26 4
gpt4 key购买 nike

我有一些 JSON 数据,我用 PHP 的 json_encode() 对其进行了编码,它看起来像这样:

{
"site": "site1",
"nbrSicEnt": 85,
}

我想要做的是将数据作为文件直接写入 FTP 服务器上。

出于安全原因,我不希望在将文件发送到 FTP 服务器之前先在本地创建文件,我希望即时创建文件。因此,例如,无需使用 tmpfile()

当我阅读 ftp_put 的 php 文档时:

bool ftp_put ( resource $ftp_stream , string $remote_file , 
string $local_file , int $mode [, int $startpos = 0 ] )

在将其写入远程文件之前,需要创建一个本地文件(字符串 $local_file)。

我正在寻找一种直接写入remote_file的方法。我怎样才能使用 PHP 做到这一点?

最佳答案

file_put_contents是最简单的解决方案:

file_put_contents('ftp://username:pa‌​ssword@hostname/path/to/file', $contents);

如果不起作用,可能是因为您没有URL wrappers enabled in PHP .


如果您需要更好地控制写入(传输模式、被动模式、偏移、读取限制等),请使用 ftp_fput带有 php://temp (or the php://memory) stream 的句柄:

$conn_id = ftp_connect('hostname');

ftp_login($conn_id, 'username', 'password');
ftp_pasv($conn_id, true);

$h = fopen('php://temp', 'r+');
fwrite($h, $contents);
rewind($h);

ftp_fput($conn_id, '/path/to/file', $h, FTP_BINARY, 0);

fclose($h);
ftp_close($conn_id);

(添加错误处理)


或者您可以直接在 FTP 服务器上打开/创建文件。如果文件很大,这特别有用,因为您不需要将整个内容保留在内存中。

参见Generate CSV file on an external FTP server in PHP .

关于php - 不使用中间文件将内存中的数据传输到FTP服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27103587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com