Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不使用中间文件将内存中的数据传输到FTP服务器_Php_Ftp - Fatal编程技术网

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

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数据,我用PHP的
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:pa‌​ssword@hostname/path/to/file', $contents);
如果它不起作用,可能是因为你没有


如果您需要更好地控制写入(传输模式、被动模式、偏移、读取限制等),请使用带有手柄的:

(添加错误处理)


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

file_put_contents('ftp://username:pa‌​ssword@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);