У меня есть некоторые данные JSON, которые я закодировал с помощью json_encode()
PHP, это выглядит так:
{ "site": "site1", "nbrSicEnt": 85, }
То, что я хочу сделать, – это записать данные непосредственно в виде файла на FTP-сервер.
По соображениям безопасности я не хочу, чтобы файл был создан локально сначала перед отправкой его на FTP-сервер, я хочу, чтобы он был создан «на лету». Таким образом, без использования tmpfile()
например.
Когда я прочитал документацию php для ftp_put
:
bool ftp_put ( resource $ftp_stream , string $remote_file , string $local_file , int $mode [, int $startpos = 0 ] )
Чтобы записать его в удаленный файл, необходимо создать локальный файл ( string $local_file
).
Я ищу способ прямой записи в файл remote_file. Как я могу это сделать с помощью PHP?
file_put_contents
– это самое простое решение:
file_put_contents('ftp://username:password@hostname/path/to/file', $contents);
Если это не сработает, возможно, это связано с тем, что в PHP нет обработчиков URL-адресов .
Если вам нужен больший контроль над текстом (режим передачи, пассивный режим, смещение, предел чтения и т. Д.), Используйте ftp_fput
с дескриптором ftp_fput
php://temp
(или php://memory
) :
$conn_id = ftp_connect('hostname'); ftp_login($conn_id, 'username', 'password'); $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_put () или что-то подобное? и Stream FTP Upload с PHP? вы должны иметь возможность делать что-то, используя либо CURL, либо PHP-обертки FTP, используя file_put_contents()
.
$data = json_encode($object); file_put_contents("ftp://user:pass@host/dir/file.ext", $data, FILE_APPEND);