Php 不使用中间文件将内存中的数据传输到FTP服务器
我有一些JSON数据,我用PHP的Php 不使用中间文件将内存中的数据传输到FTP服务器,php,ftp,Php,Ftp,我有一些JSON数据,我用PHP的JSON\u encode()对其进行编码,它看起来像这样: { "site": "site1", "nbrSicEnt": 85, } 我想做的是将数据作为文件直接写入FTP服务器 出于安全原因,我不希望在将文件发送到FTP服务器之前先在本地创建该文件,我希望能够动态创建该文件。例如,不使用tmpfile() 当我阅读ftp\u put的php文档时: bool ftp_put ( resource $ftp_stream , string
JSON\u encode()
对其进行编码,它看起来像这样:
{
"site": "site1",
"nbrSicEnt": 85,
}
我想做的是将数据作为文件直接写入FTP服务器
出于安全原因,我不希望在将文件发送到FTP服务器之前先在本地创建该文件,我希望能够动态创建该文件。例如,不使用tmpfile()
当我阅读ftp\u put
的php文档时:
bool ftp_put ( resource $ftp_stream , string $remote_file ,
string $local_file , int $mode [, int $startpos = 0 ] )
用户需要先创建本地文件(string$local_file
),然后再将其写入远程文件
我正在寻找一种直接写入远程_文件的方法。如何使用PHP实现这一点?根据,您应该能够使用CURL或PHP的FTP包装器,使用file\u put\u contents()
实现这一点
最简单的解决方案是:
file_put_contents('ftp://username:password@hostname/path/to/file', $contents);
如果它不起作用,可能是因为你没有
如果您需要更好地控制写入(传输模式、被动模式、偏移、读取限制等),请使用带有手柄的: (添加错误处理)
也可以直接在FTP服务器上打开/创建文件。如果文件很大,这尤其有用,因为您不需要将整个内容保存在内存中 看
file_put_contents('ftp://username:password@hostname/path/to/file', $contents);
$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);