passive - php ftp copy file
Transmita la carga de FTP en fragmentos con PHP? (2)
OK, entonces ... Esto podría ser lo que estás buscando. ¿Estás familiarizado con Curl?
CURL puede admitir anexar FTP:
curl_setopt ($ ch, CURLOPT_FTPAPPEND, TRUE); // APPEND FLAG
La otra opción es usar ftp: // / ftps: // streams, ya que PHP 5 permiten agregar. Ver ftp: //; ftps: // Docs. Puede ser más fácil de acceder.
¿Es posible transmitir una carga FTP con PHP? Tengo archivos que necesito subir a otro servidor, y solo puedo acceder a ese servidor a través de FTP. Lamentablemente, no puedo aumentar el tiempo de espera en este servidor. ¿Es posible hacer esto?
Básicamente, si hay una manera de escribir parte de un archivo, y luego agregar la siguiente parte (y repetir) en lugar de cargar todo al mismo tiempo, eso me salvaría. Sin embargo, mi Google no me ha dado una respuesta.
Es esto alcanzable?
La forma más fácil de agregar un fragmento al final de un archivo remoto es usar file_put_contents
con el indicador FILE_APPEND
:
file_put_contents(''ftp://username:pa​ssword@hostname/path/to/file'', $chunk, FILE_APPEND);
Si no funciona, es probable que sea porque no tiene contenedores de URL habilitados en PHP .
Si necesita un mayor control sobre la escritura (modo de transferencia, modo pasivo, etc.) o no puede usar file_put_contents
, use ftp_fput
con un manejador para la ftp_fput
php://temp
(o php://memory
) :
$conn_id = ftp_connect(''hostname'');
ftp_login($conn_id, ''username'', ''password'');
$h = fopen(''php://temp'', ''r+'');
fwrite($h, $chunk);
rewind($h);
// prevent ftp_fput from seeking local "file" ($h)
ftp_set_option($conn_id, FTP_AUTOSEEK, false);
$remote_path = ''/path/to/file'';
$size = ftp_size($conn_id, $remote_path);
$r = ftp_fput($conn_id, $remote_path, $h, FTP_BINARY, $size);
fclose($h);
ftp_close($conn_id);
(agregue el manejo de errores)