Subir un archivo por FTP con PHP
Publicado por
María Paulina Ramírez Vásquez
domingo, 22 de noviembre de 2009
10:52 p. m.
Para muchos es difícil subir archivos a través de la función copy de PHP debido a ciertas restricciones en los directorios de los servidores de hosting (regularmente los gratuitos) que no permiten este tipo de instrucciones en dichos servidores. Como alternativa podemos usar la extensión php_curl de PHP para hacer subidas a través del protocolo FTP.
A continuación un ejemplo de cómo podemos subir un archivo por FTP con PHP. Antes que nada, debemos activar la extensión php_curl.
Primero, crearemos el formulario por donde se pedirá el archivo a subir:
En el formulario anterior, por medio del action, hacemos llamado al archivo "subir-archivo.php" el cual contiene las siguientes líneas de código:
Con esto, podremos subir un archivo por FTP usando la extensión php_curl de PHP.
A continuación un ejemplo de cómo podemos subir un archivo por FTP con PHP. Antes que nada, debemos activar la extensión php_curl.
Primero, crearemos el formulario por donde se pedirá el archivo a subir:
<form action="subir-archivo.php" enctype="multipart/form-data" id="form1" method="post" name="form1"> Busque su archivo por aquí: <input id="archivo" name="archivo" type="file" /> </form>
En el formulario anterior, por medio del action, hacemos llamado al archivo "subir-archivo.php" el cual contiene las siguientes líneas de código:
$tmpfile = $_FILES['archivo']['tmp_name']; $tmpname = $_FILES['archivo']['name']; $ftpuser = "usuario_ftp"; $ftppass = "contraseña_ftp"; $ftppath = "ejemplo.com/directorio_ejemplo/"; // aquí se coloca la URL del directorio donde se subirán los archivos $ftpurl = "ftp://".$ftpuser.":".$ftppass."@".$ftppath; if ($c != "") { $fp = fopen($tmpfile, 'r'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $ftpurl.$tmpname); curl_setopt($ch, CURLOPT_UPLOAD, 1); curl_setopt($ch, CURLOPT_INFILE, $fp); curl_setopt($ch, CURLOPT_INFILESIZE, filesize($tmpfile)); curl_exec($ch); $error = curl_errno($ch); curl_close ($ch); if ($error == 0) { $rpta = 'Archido subido correctamente.'; } else { $rpta = 'Error al subir el archivo.'; $err=1; }
Con esto, podremos subir un archivo por FTP usando la extensión php_curl de PHP.