Intereting Posts
Как использовать CURL вместо file_get_contents? Получение имен параметров из запроса SOAP с расширением PHP SOAP? Изменено PDO :: ATTR_EMULATE_PREPARES на FALSE и появляется ошибка «Недопустимый номер параметра» PHP-разработчик ищет решения, эквивалентные архитектуре Java EE Поврежденные символы, когда jQuery.AJAX отправляет PHP (UTF-8 и ISO-8859 несовместимости) Организация данных на основе Timestamp mysql + PHP преобразование config ini, как разделенное по строкам, значение в действительные ключи массива Используя Dropzone.js для загрузки после создания нового пользователя, отправьте заголовки Класс вызова PHP в классе возвращает ошибку: 500 Получить содержимое файла через PHP cURL как автоматически обновлять контент без перезагрузки веб-страницы с помощью php / ajax? Apache: встроенный PHP не работает на Linux Почему TCPDF игнорирует мой встроенный CSS? ajax dropdown (страна, штат, город) Переименование дубликатов файлов в папке с php

Передача данных в памяти на FTP-сервер без использования промежуточного файла

У меня есть некоторые данные 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:pa‌​ssword@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);