FTP Upload con PHP
- 22/11/2007
- 12:40 am
Hoy les presentamos una guía de como implementar Upload de archivos por FTP utilizando PHP. Para ello nos hemos guiado de FTP Upload via cURL en donde esta muy bien explicado.
Que necesitamos?
cURL es una librería PHP muy potente la cual permite enviar y recibir archivos por diferentes protocolos (HTTP, FTP), además soporte envío de datos por POST o GET, incluso permite autenticarse en servidores remotos. Entonces utilizaremos cURL para conectarnos al nuestro FTP y haremos la transferencia del archivo seleccionado.
Creando el Formulario
Lo primero es crear un formulario en donde seleccionaremos el archivo a subir, esto de la siguiente forma:
Creando el Script
El siguiente paso es crear el php que se encargue de subir el archivo, primero verificamos que se haya seleccionado el archivo, luego creamos una variable cURL la cual asignamos con los valores que deseamos enviar y finalmente verificamos que se haya subido correctamente el archivo.
-
$rpta = "";
-
if ($_POST["action"] == "upload") {
-
$tmpfile = $_FILES['archivo']['tmp_name'];
-
$tmpname = $_FILES['archivo']['name'];
-
-
$ftpuser = "usuario";
-
$ftppass = "password";
-
$ftppath = "ftp.dominio.com/path/";
-
$ftpurl = "ftp://".$ftpuser.":".$ftppass."@".$ftppath;
-
-
if ($tmpname != "") {
-
$ch = curl_init();
-
curl_setopt($ch, CURLOPT_URL, $ftpurl.$tmpname);
-
curl_setopt($ch, CURLOPT_UPLOAD, 1);
-
curl_setopt($ch, CURLOPT_INFILE, $fp);
-
curl_exec($ch);
-
$error = curl_errno($ch);
-
curl_close ($ch);
-
if ($error == 0) {
-
$rpta = 'Archivo subido correctamente.';
-
} else {
-
$rpta = 'Error al subir el archivo.';
-
}
-
} else {
-
$rpta = 'Seleccionar un archivo.';
-
}
-
}
Como puede ver no es muy complicado este tipo de implementación y tiene la ventaja que podemos enviar archivos mas grandes que con upload de forma normal. No he puesto una versión de este ejemplo funcionando pues quiero evitar que suban archivos no deseados. Finalmente les dejo los archivos fuente de este ejemplo en donde solo deben colocar el usuario, clave y dominio a donde desean subir.
Posts Relacionados
- SWFUpload beta
- Upload de archivos > 2Mb (PHP)
- Upload Multiple tipo Gmail
- Upload de Archivos con Flash
- Upload de Archivos con PHP
Total de Comentarios: 22
tremendo ejemplo gracias
gracias por el codigo de upload la verdad es que me sirvio de mucho estamos en contacto…
Luche y luche y no logre hacerlo funcionar. Me da error en el upload. Tengo acceso escritura el directorio donde se alojarian los archivos, tengo bien la ruta, usuario y password, etc. Alquien me puede ayudar?
Augusto fíjate bien a que carpeta estas subiendo. Ahora si lo que deseas es saber que error devuelve, puedes imprimir el error, esto es modificando el if de la forma:
if ($error == 0) {
$rpta = 'Archivo subido correctamente.';
} else {
echo "Error code: " . $error;
$rpta = 'Error al subir el archivo.';
}
Esto te imprimirá un numero que indica que error ha ocurrido, puedes ver la lista de códigos de errores en: cURL Error Codes
Hola buenos días.
He probado el ejemplo y en principio me funciono correctamente con archivos pequeños. Pero utilizando archivo de más tamaño (5MB por ejemplo), me informa de un error “Internal Server Error”.
¿Puede ser que el servidor que estoy utilizando tenga algún tipo de limitación a la hora de utilizar el ejemplo?
Muchas gracias. Espero que alguien me pueda ayudar.
Que tal, por mas que intento no me funciona, no me pide el usuario y contraseña.
Hice lo que le dijiste a Augusto, y en error me sale esto: Error code: 10
¿Me pudieras ayudar?
Gracias,
Saludos.
Hola a todos, necesito ayuda con respecto a este ejemplo, porq lo ejecuto y me sale el siguiente error:
Method Not Allowed
The requested method PUT is not allowed for the URL /upload/license.txt.
Apache/2.2.6 (Unix) mod_ssl/2.2.6 OpenSSL/0.9.7a mod_bwlimited/1.4 mod_auth_passthrough/2.1 PHP/5.2.5 Server at http://www.tiburones.net Port 80
Porfa necesito ayuda de ustedes Gracias de antemano
gracias nuevamente por el codigo de upload, la verdad es que a mi no me ha dado ningun tipo de problema…sugiero un debate en linea para compartit conocimientos de php..gracias
les dejo mi correo por si desean algo….
suerte….php
Buenas Tardes, me parece muy interesante el contenido de la pagina, pero tengo un problema con el ftp unload, me sale el error el error numero “6″ CURLE_COULDNT_RESOLVE_HOST,agradezco la ayuda de alguno de ustedes pues soy muy nuevo en esto…gracias…
Me da Este Errooor!!!
Fatal error: Call to undefined function curl_init() in /home/virtual/sitio172322/www/ftpupload.php on line 14
Por favor, alguien me podria decir hasta cuantos megas puedo subir? Se que mi servidor no me deja subir desde una pagina php mas de 8 megas, pero quizás sea distinto desde con el codigo de ftp
gracias
a mi si me funciona en un hosting pero cuando lo pongo a funcionar en otro host a la hora que le doy clik en upload con un archivo que pesa 20 megas se cae la web
Muy bueno, muchas gracias!
me da el siguiente error
Fatal error: Call to undefined function: curl_init() in /var/www/bacigaluppi.com/htdocs/uploadftp/ftpupload.php on line 14
que debo hacer y donde…
Gracias… soy un principiante, de todas maneras en otros sitios que lo he provado ha funcionado correctamente.
Otra vez gracias.
Miguel, el mensaje esta indicando que no tienes habilitada la función curl en tu servidor, verifica que este habilitado o solicita que te lo activen a tu proveedor de hosting.
Me da error de programacion.
error 500
Hola, ami me sale error: 67… y no me sube nada… que puede ser?
Gracias!
El error 67 puede darse porque el servidor remoto no tiene activo el puerto, o por permisos del usuario ftp, debes revisar este tema con el proveedor del servicio
muy buen aporte, funciona todo de maravilla, ojala puedan postear y si ya esta posteado indicarme como exportar de php a pdf
Hola, puedo subir archivos chicos pero cuando intento subir archivos de más de 8MB me dice que subio correctamente pero en realidad no subio nada.
Habra alguna forma de subir archivos más grandes? O es necesario cambiar de servidor?
Muchas gracias.

