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.