Upload de Archivos con PHP
- 17/12/2006
- 2:28 am
Muchas veces necesitamos hacer uploads de archivos en nuestros proyectos para muchos es algo sencillo pero para los que recién empiezan les explicare como se realiza el proceso. Este upload lo haremos utilizando php.
El primer paso es crear un formulario en el cual se seleccione el archivo a subir, para ello utilizaremos el tag input del tipo file, además hay que tener en cuenta que hay que seleccionar el tipo de encoding para el formulario el cual es: multipart/form-data.
Luego en la página upload.php que es que se encarga de recibir los datos del formulario (Lo definimos en la propiedad action del formulario). El archivo seleccionado es subido temporalmente a una carpeta, entonces tenemos que copiar el archivo a la carpeta final, en caso contrario este archivo se eliminará automáticamente.
Para acceder a las propiedades del archivo php nos brinda el array $_FILES con las siguientes propiedades, en donde archivo es el nombre del campo con el cual se envió el archivo desde el formulario:
- $_FILES['archivo']['size']: tamaño en bytes del archivo recibido
- $_FILES['archivo']['type']: tipo mime del archivo, por ejemplo image/gif
- $_FILES['archivo']['name']: nombre original del archivo
- $_FILES['archivo']['tmp_name']: nombre del archivo temporal que se utiliza para almacenar en el servidor el archivo recibido
Algo que hago siempre es anteponer 6 caracteres aleatorios antes del nombre del archivo, esto para evitar duplicidad de nombres de los archivos.
-
$status = "";
-
if ($_POST["action"] == "upload") {
-
// obtenemos los datos del archivo
-
$tamano = $_FILES["archivo"]['size'];
-
$tipo = $_FILES["archivo"]['type'];
-
$archivo = $_FILES["archivo"]['name'];
-
-
if ($archivo != "") {
-
// guardamos el archivo a la carpeta files
-
$destino = "files/".$prefijo."_".$archivo;
-
$status = "Archivo subido: <b>".$archivo."</b>";
-
} else {
-
$status = "Error al subir el archivo";
-
}
-
} else {
-
$status = "Error al subir archivo";
-
}
-
}
Todos los archivos se copiarán a la carpeta /files por que así lo definimos a la hora de copiar el archivo. Hay que tener en cuenta que la carpeta a donde se copiarán los archivos deben tener permisos de escritura en caso contrario se devolverá un error.
Ahora si tienes un hosting deberás cambiar los permisos, esto se hace comúnmente con un cliente de FTP que utilizas para subir tus archivos al hosting. Por ejemplo yo utilizo el FlashFXP como cliente de FTP y hay una opción llamada Atributes (CHMOD) para cambiar los permisos como se muestra en la siguiente imagen.

En nuestro ejemplo no hemos utilizado las propiedades size y type, pero ustedes la pueden usar para restringir a un máximo de tamaño de archivo o restringir a cierto tipo de archivos por ejemplo solo permitir subir imágenes. Para finalizar, hemos agregado estilos a nuestra página creada y además hemos listado los archivos subidos a la carpeta files. Pueden ver el resultado final del ejemplo además de ellos les dejo los archivo fuente para que lo descarguen.
Posts Relacionados
- SWFUpload beta
- Upload de archivos > 2Mb (PHP)
- FTP Upload con PHP
- Upload de Archivos con Flash
- Upload Multiple tipo Gmail
Total de Comentarios: 144
Disculpen mi ignorancia, pero no entendi bien el tutorial, necesito urgentemente hacer eso mismo pero para cambiar noticias y de todas formas con las imagenes, pero no entiendo algo…
el primer codigo va en un html?
y el segundo que muestran es para un PHP ?
recien comienzo en este mundo y si me pueden explicar mas a prueba de idiotas les estaria muuuuy agradecido..
Saludos
Hola, claro que necesitas dos archivos: un html que se encarga de pedir que subas el archivo y un php que se encarga de procesar los datos que ha enviado el html. Otra forma es que sea un solo php que tenga las dos cosas, es decir que te pida subir y luego que procese los datos. Descarga los archivos de ejemplo pruebalo y lo entenderas mejor.
Pruebo este script y me da error de escritura en el directorio temporal del servidor. Ya le verifique que todos los directorios tengas todos los permisos de lectura/escritura. El ejemplo de esta pagina da error, te lanza un Warning por un permiso negado de escritura. Hay alguna otra forma?
La unica forma de subir archivos es esta, a ver si me mandas un screenshot de tu pantalla de error para ver como puedo ayudarte, pero de antemano es un tema de permisos. Verifica todo nuevamente.
Hola, me funciona a la perfección, pero necesito hacer lo mismo con archivos grandes zip, por ejemplo 5 megas. pero no me deja, por favor lo necesito, gracias
Lo que pasa que generalemente PHP esta configurado para subir como maximo 2MB y tambien que el script se detiene en un maximo de tiempo, tu solucion es editar el archivo de configuracion php.ini para dar los permisos necesarios.
Muy buen tutorial, tenes idea como hacer uploads con el API de dreamweaver?
Slds!
Muy buen tutorial, la verdad sos un groso, pero una cosa… en el ejemplo que tenes vos aparece toda la lista de archivos subidos. ¿Como hago que solo aparesca el link del archivo que se subió? Respondeme porfavor… Saludos
Hola, bueno para mostrar los archivos que has subido, debes utilizar la funcion readdir para leer los archivos de una carpeta, el ejemplo de ello esta en el archivo del ejemplo.
Perdona pero ni idea que es readdir recien empiezo con php, ya sabia HTML, QB, AS, y algo de VB.
Si podes me mandas el codigo completo que tengo que poner por mail?, die_93@hotmail.com necesito algo al estilo de esta pagina http://www.subelo.net
Gracias
Hola a todos, alguien sabe como se puede subir mas de 2 archivos en el mismo
El formulario me carga pero al subir me da error en la pàgina y nada sube.
A ver si enviar el error que te sale te podría ayudar. Otra posibilidad es que me des la dirección para revisar como esta funcionando.
hola quiero restringir cierto tipo de archivos e modificado type pero sige cargano videos y solo quiero cargar imagenes si pudieran en viarme todo el codigo para que suban solo imagenes gracias att:edward2got@hotmail.com.
http://www.videos.iespana.es
Si deseas solo subir imágenes el código seria el siguiente:
< ?php
$status = "";
if ($_POST["action"] == "upload") {
// obtenemos los datos del archivo
$tamano = $_FILES["archivo"]['size'];
$tipo = $_FILES["archivo"]['type'];
$archivo = $_FILES["archivo"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);
if ($archivo != "") {
if ($tipo == "image/gif" || $tipo == "image/jpeg" || $tipo == "image/jpg") {
$destino = "uploads/".$prefijo."_".$archivo;
if (copy($_FILES['archivo']['tmp_name'],$destino)) {
$status = "Archivo subido: “.$archivo.”“;
} else {
$status = “Error al subir el archivo”;
}
} else {
$status = “Error: solo se permite GIF o JPG”;
}
} else {
$status = “Error al subir archivo”;
}
}
?>
[...] Pujar un arxiu al servidor amb PHP [...]
hola el codigo me funciona bien solo que aparece el sig. mensaje:
Notice: Undefined index: action in /var/www/vhosts… on line 3
En el código php tengo lo siguiente
mmmm a ver si esta vez si pueden ver el codigo….
espero puedan ayudarme saludos…
no entiendo xq no se muestra el codigo pero en la linea 3 está eso de que si action es igual a upload: if ($_POST["action"] == “upload”)
Hola, bueno no se muestra código, por que lo que enviaste es código PHP y el blog previene que alguien ingrese código que se podría ejecutar y dañar el blog.
Respecto al punto que mencionas, no es ningún error, es un Notice que significa que es una nota para tomar en cuenta, esto es para tema de depuración. Ahora bien este mensaje aparece por que por defecto la variable $_POST["action"] no existe al inicio, existirá luego que hayas presionado el botón Upload File.
Para eliminar este mensaje debes configurar tu archivo php.ini para que no devuelva estos mensajes o de lo contrario puedes colocar el siguiente código en la primera linea de tu archivo php:
error_reporting(E_ERROR);
El cual solo mostrará los errores. Puedes leer mas acerca de este punto en: http://us3.php.net/error-reporting.
Hola bueno muchas gracias me fue de gran utilidad, inconformidad solucionada.
Hola me surgió otro pequeño imprevisto… Lo que sucede es que tuve la necesidad de que después de cargar, con algun boton me envie a otra pagina pero si depués deseo regresar me dice que la pagina ya expiró
Causa más probable:
La copia local de esta página web no está actualizada y el sitio web requiere descargarla de nuevo.
como puedo hacer para que no expire o que solucion me recomiendas
Saludos…
Lo que sucede es que cuando envías los datos mediante un formulario, de allí vas a otra página y luego intentas regresar a la página a donde se enviaron los datos, te dirá que la página ha expirado pues esta intentando recibir nuevamente los datos. Para ello una vez finalizado el envío del formulario es bueno hacer una redirección a un mensaje de confirmación.
Me da el error 6 cuando imprimo, $archivo = $_FILES["archivo"]['error'];
Sabeis que significa
Te da un error pues la matriz $_FILES solo tiene como indices: name, type, size, tmp_name.
Puedes obtener mas información en: http://www.php.net/features.file-upload
tu tutorial es el mejor q he encontrado, y me funciona todo al 100%… pero unicamente cuando lo pruebo en mi makina… cuando lo subo a un hosting (y la carpeta files tiene permisos), los archivos no se suben… donde tiene q ir esa carpeta? espero q me ayudes en esta duda q tengo… gracias x el tutorial…
Hola, tal como explicas, con $_FILES["archivo"]['size'] podemos comprobar el tamaño del archivo y decidir si lo guardamos o no. Pero para eso el archivo debe haberse subido entero para ver luego su tamaño.
Se puede limitar el tamaño del archivo que pueden subir antes o mientras lo están subiendo? Es decir, q si ha enviado ya los 2 megas q le dejo, y sigue enviando datos, que lo pare ya, y no espere a tener el archivo entero para decir q no vale.
Hola, gracias por esta solución tan práctica. Además te agradezco que funcione porque he probado varias alternativas de la red y no pasa nada, siempre tienen muchos problemas los scripts.
LA PREGUNTA:
¿Cómo puedo agregar un botón al lado del nombre de cada archivo en el listado para poder borrar el archivo que ya he subido?
Se que hay que usar la función “unlink” pero no sé cómo incorporarla en un botón.
hola quiero dar las gracicias por que me acervido de mucho no creia que esto funcionara y si podeis darme algun comentario de mi pagina web me gustaria saber vuestra opinion … agradeseria mucho vuestras sugerencias y comentarios att:edward2got@hotmail.com.
http://www.videos.iespana.es
Hola, muy bueno el tutorial, pero tengo una duda que a ver si me podeis ayudar. No se como hacer para que me deje subir varios archivos con el mismo nombre sin que esto produzca que se eliminen los que ya estaban alli. muchas gracias y a ver si me podeis echar una mano
Me gusta estas ayudas pero quisiera que ademas de eso, cuando cargo el alchivo lo coloque a la carpeta con otro nombre (en mi caso lo recoje de la base de datos)sin dañar la extencion EJE: cargo el archivo “erick.doc” lo cargo a otra carpeta con la aplicacion con este nombre “01.doc”
En nuestro ejemplo cuando se hace upload de archivos nosotros creamos un número aleatorio que lo concatenamos al nombre original del archivo, esto evita que se generen dos archivos con el mismo nombre.
Respecto a guardar los archivos con un nombre que lo tienes desde tu base de datos, lo que se hace es primero obtener la extension del archivo, para ello se utiliza la función split.
$arrfile = split(”.”, $archivo);
$vext = $arrfile[1];
$destino = “files/”.$nombreDB.”.”.$vext;
Donde $nombreDB es el nombre con el que se guarda en la base de datos.
Hey viejos ustedes son una calidad de genios ,gracias
muy bueno ya entendi como funciona pero si yo quiero que ademas de subir el archivo me cree una pagina con un link a los archivos que voy subiendo como se hace ?
perdon redacte mal la pregunta lo que necesito es que los visitantes puedan subir archivos tipo word excel etc y se agregue en una pagina ordenado alfabeticamente.
Para que otros usuarios lo puedan descargar intercambiando archivos.
ya cree una base de datos pero no puedo subir el archivo a ella .
Gracias
no se si es que yo soy muy leto pero para borrar como es que no comprender
yo busco como borrar imagenes de un archivo
no se si es que yo soy muy lento pero esque no se como borrar los archivos es que busco un script para borrar imajenes de un archivo
pero solo la seleccionada te agradesco
Cómo sería para hacer un formulario para subir una imagen al servidor y además unos datos rellenado al mismo tiempo en el formulario, tipo: titulo de la imagen, descripcion, fechat, etc? (con base de datos)
gracias
hola bueno este codigo es el q buscaba pero como seria para q aceptara solo archivos .txt y los demas los denegara
Hola, el codigo para hacer upload me funciona muy bien, gracias.
**Como quedaria el codigo php para permitir que los usuarios puedan ver y bajar a su maquina los archivos ya subidos, suponiendo que este es el directorio donde se almacenan los archivos “C:/easyphp1-8/www/agenda/files/
Para que los usuarios puedan leer los archivos que has subido, tendrías que hacer una función para leer los archivos de la carpeta deseada, esto se hace utilizando la función opendir de PHP. En el archivo de ejemplo he puesto la opción para visualizar los archivos que se han subido.
Soy nueva trabajando con php y necesito saber, como puedo a la vez que cargo el archivo insetar su nombre en la base de datos en donde debe estar almacenado
necesito saber como en el ejemplo que tienes para que automaticamete te muestre el file que subes, podiras mandar el codigo tal cual lo tienes en tu file upload.php gracias y saludos
hola!no se si sk me liao o k me pasa,pero necesito el script para subir la foto ami base de datos [phpMyAdmin]y posteriormente verla en la pagina ala k la envio…gracias!!!
que bueno el aporte lo probe me salio pero tengo una duda cuando quise solo subir imagenes me da un error.
simpre va eso de image/gif
(image) es una variable declarada por uno ?
Excelente me sirvio de mucho gracias
Necesito saber por que cuando intento subir una archivo de al menos 3 mb me da error y no lo puedo subir, por favor quien me pueda ayudar, esto es para la tesis de graduación y necesito solucionar ese problema
Sucede que php esta configurado para aceptar archivos con un cierto limite de tamaño, esto se configura en el archivo php.ini de tu php, para ello abres el archivo php.ini y buscas la palabra:
post_max_size
Donde puedes asignarle el valor máximo que soportará cuando se hace upload.
Muchas gracias unijimpe, me ha ayudado mucho tu tutorial. Sólo tube un problema con los permisos que fue fácil de solucionar
Muchas gracias ya pude configurarlo y todo me funciona perfecto….
Hola estoy probando tu tutorial y me parece muy práctico. Pero tengo un problema, no me envia errores, pero tampoco hace nada. Los arreglos $_POST y $_FILES, están vacios al imprimirlos desde upload.php. Puedes ayudarme con ello. Muchas gracias.
Hola a todos:
Alguien podría decirme la forma de borrar un archivo despues que ya este se halla cargado al servidor, el objetivo es no tener archivos guardados que realmente sean obsoletos.
Además necesito saber como yo puedo a la vez que cargo el archivo incorporarlo a la base de datos
por favor necesito una respuesta rapida, es que lo tengo que utilizar en mi tesis de grado, gracias de antemano….
el titulo de webmaster es un sofisma de distracción, la verdad es que soy bueymaster.
1) Da gusto llegar a un blog como el suyo
2) El respeto y la humildad que usted emplea para responder al foro, deja de manifiesto su calidad humana y su profesionalismo.
3) Abusando de su buena voluntad deseo consultar lo siguiente:
a)hice el form html y lo llamé envio_aportaciones.html
b)creé la pag upload.php con el script respectivo
c)Generé la carpeta files y le di los permisos de escritura con mi prog para http://FTP.
Y no me suben los archivos, en cambio me aparece esto:
$status = “”; if ($_POST["action"] == “upload”) { // obtenemos los datos del archivo $tamano = $_FILES["archivo"]['size']; $tipo = $_FILES["archivo"]['type']; $archivo = $_FILES["archivo"]['name']; $prefijo = substr(md5(uniqid(rand())),0,6); if ($archivo != “”) { // guardamos el archivo a la carpeta files $destino = “files/”.$prefijo.”_”.$archivo; if (copy($_FILES['archivo']['tmp_name'],$destino)) { $status = “Archivo subido: “.$archivo.”"; } else { $status = “Error al subir el archivo”; } } else { $status = “Error al subir archivo”; } }
Bueno, la verdad es que seguiré visitando su blog, definitivamente así por ahora no me funcione, no m epuedo despedir sin agradecer su calidad y su lujo de competencia.
Ya está resuelto mi problema, gracias de nuevo y muchos éxitos en todos sus proyectos.
WENO AQUI VISITANDO LA PAGINA. . . DE MUCHA A AYUDA PARA MUCHOS SIN DUDA, Y PS MUY SENCILLO Y DE MUCHA UTILIDAD, GRACIAS POR TODO A LA WEB Y A LOS MASTER´S!! SALUDOS.
Hola que tal. Oye me gustaría saber cómo implementar el botón de eliminar cada archivo ahi mismo, cóm puedo hacer eso? ojalá me puedas ayudar, de antemano, gracias.
Voy a preparar un ejemplo para eliminar archivos que se han subido mediante este proceso.
Tengo una duda, que pasaria el usuario esta enviando un archio con espacio ejemplo “dia dos del tres.doc”, que se puede hacer en ese caso, y si no fuera tanta la molestia, al momento de subir el archivo subir comentarios extras a una DB, mas o menos como seria?.. Gracias de antemano
Una pregunta..
Como puedo hacer para agregarle barra de progreso..
Osea Mediante va subiendo salga una barra q diga 10% 20% y sucesivamente
Algo como sale cuando subes en rapidshare o sendspace
Salu2
muy bueno!! saludos
Muy Bueno el tutorial… me funcionó perfectamente, muy buena explicación ademas.
Quisiera saber como hago si desde el propio website requeriese borrar algun archivo subido a la carpeta.
tengo el sigiente link al lado del nombre del archivo que coloco en el listado ( de c/u):
cual seria la sentencia para referirme a este archivo cuando vaya a la pagina donde haga efectiva la eliminación? y como la elemino puntualmente?
Esas son mis dudas por favor respondan
Funciona de puta madre, gracias hace como 2horas que estoy tratando de resolver el problema. Saludos
Como hago para que salgan los links despues que suba la imagen?
Gracias..
Felicitaciones el tuto es muy bueno
Gracias
Hola a todos, cargo un archivo para leerlo desde una aplicación web PHP que esta en un servidor linux (en este momento no tengo conocimiento de la versión de linux), resulta que la aplicación envia y procesa archivos nmenores de 8 mb aprox. estoy tratando de enviar una archivo de 10 Mb y no lo hace.
Incluso al archivo de 10 Mb le quito información y lo dejo de 7 Mb y lo sube y procesa sin problema, con esto se descarta que el archivo pudiese estar corrupto.
Cuando le doy al boton de enviar el archivo solo aparece el mensaje en la parte inferior del navegador “enviando petición a XXXX” luego la página se recarga y no aparece nada, ni un error.
De verdad no se que hacer, tuve problemas comunes como el tamaño maximo del archivo con los archivos de 3 Mb, luego el error de tiempo máximo de ejecución de un script con los archivos de 7 Mb, pero con los de 10 Mb ni idea de lo que pudiera estar pasando… a menos que no tenga nada que ver con PHP, sino con el servidor de Linux.
Gracias de antemano por cualquier sugerencia.
Buenas…. pues yo tengo un Uploader flash bastante bueno… pero necesito enviar la informacion a un upload.php… (no hace falta que sea complejo… con esto vale)
pero resulta que me formatee el Ordenador… y ahora… nose porque al hacer el archivo en el block de notas al guardarlo me lo guarda asi…
upload.php.txt… y asi no me va… que me recomendais…bajarme algun programa (como dream weaver) o lo del block de notas se podria solucionar?
GRACIAS
Jose: Sucede que php esta configurado para aceptar archivos con un cierto limite de tamaño, esto se configura en el archivo php.ini del servidor, para ello abres el archivo php.ini y buscas la palabra: post_max_size Donde puedes asignarle el valor máximo que soportará cuando se hace upload.
Jorge: en tu caso lo que pasa que Windows esta ocultado la extensión verdadera de tu archivo, lo que puedes hacer es en el explorador de archivos, seleccionas Herramientas > Opciones de Carpeta > Ver y desmarcas la opción Ocultar Extensiones de archivo.
[...] La presente es un tutorial de como implementar un sistema de alojamiento de imágenes hecho en PHP, este ejemplo esta basado en Upload de Archivos con PHP, este sistema consiste en un formulario para seleccionar la imagen, luego se verifica el tipo de archivo para luego guardarlo en el servidor, finalmente se genera una ruta mediante el cual se puede acceder a la imagen. [...]
hola
necesito tu ayuda,necesito guardar en una tabla de la bd,los archivos o las rutas delos archivos PDF. como haria esto?
utilizando tu codigo.
gracia de antemano
unijimpe: Jose: Sucede que php esta configurado para aceptar archivos con un cierto limite de tamaño, esto se configura en el archivo php.ini del servidor, para ello abres el archivo php.ini y buscas la palabra: post_max_size Donde puedes asignarle el valor máximo que soportará cuando se hace upload.
Ya los valores los configure asi: memory_limit = 64M
post_max_size = 64M
upload_max_filesize = 64M
max_execution_time = 300
Y aun asi no hace nada, ni emite mensajes de error.
Aca esta mi post original:
Hola a todos, cargo un archivo para leerlo desde una aplicación web PHP que esta en un servidor linux (en este momento no tengo conocimiento de la versión de linux), resulta que la aplicación envia y procesa archivos nmenores de 8 mb aprox. estoy tratando de enviar una archivo de 10 Mb y no lo hace.
Incluso al archivo de 10 Mb le quito información y lo dejo de 7 Mb y lo sube y procesa sin problema, con esto se descarta que el archivo pudiese estar corrupto.
Cuando le doy al boton de enviar el archivo solo aparece el mensaje en la parte inferior del navegador “enviando petición a XXXX” luego la página se recarga y no aparece nada, ni un error.
De verdad no se que hacer, tuve problemas comunes como el tamaño maximo del archivo con los archivos de 3 Mb, luego el error de tiempo máximo de ejecución de un script con los archivos de 7 Mb, pero con los de 10 Mb ni idea de lo que pudiera estar pasando… a menos que no tenga nada que ver con PHP, sino con el servidor de Linux.
Gracias de antemano por cualquier sugerencia.
SALUDOS A TODOS
Resulta que hice lo del formulario para subir archivos y me funciona de maravilla con archivos pequeños. Al querer enviar archivos grandes me pasa lo mismo que ya se ha escrito, me da error y no sube nada. En mi caso mi servidor es linux, y no se como cambiar los datos de este archivo php.ini.
Además si no me da error, parece que el subir el archivo fue exitoso pero no sube nada.
Asi que como hago para encontrar este archivo y editarlo?
PD: no me sube un archivo pdf de 3MB
Saludos y Gracias
hola, mi consulta es como ppuedo ver los archivos subidos,porque al revisar en la base de datos, me guarda esta ruta:
c:/wamp/www/php78A.tmp
y de ahi se supone que yo llamo los datos que estan guardados en ese campo, pero en la lista donde debiera mostrarse el nombre del archivo subido, aparece lo que esta guardado en la base de datos, y al ingresar al link, me dice esto:
c:/wamp/www/php8FF.tmp
que hago para solucionar esto?, a que se debe?
saludos, espero q ue me puedan ayudar
hola, he escrito un codigo casi igual que el de unijimpe para que me suban los archivos al servidor, pero no hay manera. el codigo es el siguiente:
“;
echo “el nombre del archivo es “.”‘”.$nombre.”‘”;
echo “el tipo del archivo es “.”‘”.$tipo.”‘”;
echo “el tamaño del archivo es “.”‘”.$tamano.” bytes’”;
}
else
{
echo “no se ha podido subir el archivo”;
}
en la variable $ruta especifico la carpeta de mi servidor adonde quiero copiar el archivo subido, en este caso en la carpeta “images”, que pertenece al directorio raiz de mi servidor: es decir, seria “www.miservidor.com/httpdocs/images”, pero por mas veces que lo intento, siempre me dice “no se ha podido subir el archivo”
mi direccion de correo es “juan_jose_gp@hotmail.com” y tambien tengo cuenta en messenger, me gustaria que me respondieras a mi e-mail y si tienes cuenta en messenger, podriamos hablar por ahi
?>
se me olvidaba un detalle: la carpeta “images” de mi servidor tiene habilitado el permmiso de escritura, y me sigue dando problemas
Tu problema es un tema de rutas, por ejemplo si tu archivo para subir las imágenes se llamada upload.php y tienes la carpeta images en la misma ruta donde esta upload.php la ruta que debes colocar es “images/”. Verifica bien el tema de rutas absolutas y veras que funciona.
¿a que departamento de esta pagina web me tengo que dirigir para preguntar esta duda sobre php y mi pagina web?
La duda es sobre cómo hacer que mi sitio web se traduzca automaticamente al idioma del pais en el que se esta viendo
¿como conseguir, con php si es posible, que mi sitio web se traduzca automaticamente al idioma del pais en el que se esta viendo?
hola otra vez, he mirado eso que me dijiste y la ruta esta mas que verificada y es la que dije y sigo diciendo. Mi ruta es “www.miservidor.com/httpdocs/images”, donde “httpdocs” es la carpeta raiz de mi servidor, e “images” es una subcarpeta del directorio raiz donde quiero guardar los archivos subidos. Lo he intentado varias veces, incluso con archivos distintos, pero nada, me dice que “el archivo se ha subido”, mostrandome, segun mi codigo, su nombre, tipo y tamaño. Me voy a mi servidor, refresco toda la lista, me meto a la carpeta “images”, la cual tiene permiso de escritura en todos sus apartados, y tiene puesto el famoso 777, y nada, no hay manera. Por falta de calidad de mi servidor dudo que sea, ya que mi servidor esta alojado en HOSTALIA, empresa de alojamiento web que cuenta con dos certificados de calidad en su haber. Por favor, necesito urgentemente tu ayuda, ya que la actividad de mi sitio web va a consistir en que los usuarios puedan ojear las imagenes en el contenidas, y que puedan enviar las imagenes a mi web, previamente registrados. Mi e-mail ya lo sabes, si quieres contactar conmigo te puedo dar mi numero de telefono, pero por e-mail
Archivo subido
VOLVER
“;
echo “el tipo del archivo es “.”‘”.$tipo.”‘”;
echo “el tamaño del archivo es “.$tamano.” bytes”;
} else {
echo “no se ha podido subir el archivo”;
}
?>
ya me funciona. para conseguir eso, ademas de poner ese codigo, que era el que tu decias, hay que “refrescar” la lista de archivos de la carpeta donde los quiero meter, entonces aparecen. gracias por todo
Estoy montando un portal todo en php (soy novatillo) y para subir archivos he estado buscando información, código ya hecho etc etc. No me ha funcionado ninguna vez, aunque este es el que mas se me ajusta a lo que quiero. Me salt aun error cuando envio el formulario a upload.php que es este: “[Warning: copy(files/89e005_628842g.gif) [function.copy]: failed to open stream: No such file or directory in C:\Archivos de programa\EasyPHP 2.0b1\www\upload.php on line 13]” por otra partre decir que trabajo en local, osease en mi maquina, no he subido nada a internet. A ver si alguién sabe que es lo que puede ocurrirme. Gracias.
Se me olvidaba, he modificado algo el upload.php pero solo para quitarle los intros y los comentarios y poner el tmp_name en una variable para que la coja directamente desde ahi. CODIGO: “[".$archivo."";
} else {
$status = "Error al subir el archivo";
}
} else {
$status = "Error al subir archivo";
}
}
?>]“
VALE, YA SOLVENTÉ MI PROBLEMA, NO TENIA CREADA LA CARPETA FILES, POR ESO ESE ERROR. :S fallos como estos me encuentro con 1000 al dia, que horror.
FELICIDADES X EL BLOG Y X LOS RECURSOS QUE AQUÍ HAY.
Hola oye me puedes ayudar me sale este error
Parse error: syntax error, unexpected $end in /data/www/net.athost.vhosts/t/tev.athost.net/public_html/upload.php on line 23
te agradeceria
Hola unijimpe, he entendido bien, pero necesito que me orientes, lo que pasa es que despues de ya tener archivos en el servidor, quiero bajarlos, pero no me sirve mostrar solo el nombre del archivo y su extensión, sino que quiero tener una cierta descripcion de ese archivo para que la persona que lo quiera bajar se de cuenta que ese es el archivo que quiere por la desripción, que uso BD, como lo hago. Ayudame porfa!!!
Te felicito por este tutorial. Pero tengo un problema, hay alguna forma de hacer el upload pasándole la ruta como una variable al upload.php en lugar de usar el botón “examinar”. Es que mi problema es el siguiente, yo genero de un archivo .XML y deseo que justo cuando lo creo, automáticamente se envíe mediante un post a una dirección.
Sería posible de alguna forma??
Un saludo y muchas gracias
Por favor orientame como puedo hacer un programa en Java o en C, para poder pasar de un texto plano(lectuta de un archivo). a un html.
Yo uso un script para subir los archivos, tengo el directorio en 777 pero cuando subo un archivo lo sube en 600 y obviamente no me permite verlo, que puede ser?
Hola muy buenas.
Gracias a el tutorial me sube los archivos a la carpeta files, pero yo necesito pisar cada vez el archivo que he subido ya que lo tengo que actualizar cada poco tiempo, es decir, subir siempre el mismo archivo excel.
Como podria hacerlo???
Gracias de antemano.
Lo que debes hacer es modificar la linea en la cual se genera el nombre aleatorio para el archivo, esto lo puedes hacer reemplazando:
$destino = "files/".$prefijo."_".$archivo;
Y reemplazarlo por ejemplo por:
$destino = "files/miexcel.xls;
Entonces cada ves que subas un archivo se guardará siempre con el mismo nombre.
saludos, amigo excelente tutorial, desearia recibir ayuda en lo siguiente, poseo un formulario en PHP que envia los datos solicitados a un mail de nuestra web a fin de tratarse esos datos luego, ahora bien todos los campos del formulario me funcionan perfectamente al enviarse al mail, mi problema resulta en que me gustaria anexar este campo de adjuntar una imagen o varias si es posible a dicho formulario y que toda la informacion nos llegue en un mismo correo, el formulario en cuestion se encuentra en este link, muchas gracias por la ayuda que me puedan brindar
Teniendo este codigo, como puedo implantar el renombre de archivo con nºs aleatorios como vuestro ejemplo:
if (!move_uploaded_file ($_FILES['userfile']['tmp_name'],$base_Dir.$_FILES['userfile']['name']) || !mosChmod($base_Dir.$_FILES['userfile']['name'])) {
mosRedirect(”index.php?option=$option&Itemid=$Itemid”, _EVENTS_IMAGEFAIL.” “);
} else {
$file = $base_Dir.$userfile_name;
//chmod Bild
@chmod ($file, octdec($imagechmod));
//Vorbereiten auf Thumbnailerstellung
$thumbdir = $base_Dir.’small/’;
$save = $thumbdir.$userfile_name;
if ($imageprob = 1) {
$imageprob = TRUE;
} else {
$imageprob = FALSE;
}
mi duda es ¿Alguien sabe como hacer para que cuando subas una imagen al servidor, con upload, esta tenga un nombre aleatorio y no pueda sustituir a otra ya existente?
unijimpe muchas felicidades y sobre todo muchas gracias por el tutorial hace dos horas no sabia hacer un uploader y ahora gracias ati ya se como hacerlo!!!
Solo tengo una pregunta, cn ese uploader.. se puede subir muxa “basura” los usuarios… podrias enseñarme alguna restriccion por tiempo o algo por subidas “x” subidas al dia. Te lo agradeceria un monton,
Gracias de antemano, espero tu contestacion
holap, sabes que hice un gestor para upload, pero mi problema es que cuando subo un archivo .zip se pierde el formato de este…y no lo puedo descomprimir…
**** error *****
Archive: pages.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
note: pages.zip may be a plain executable, not an archive
unzip: cannot find zipfile directory in one of pages.zip or
pages.zip.zip, and cannot find pages.zip.ZIP, period.
Quisiera asber si existe una forma en la que no tenga que colocer un campo de tipo examinar sino que con el nombre del archivo se pueda hacer el upload a un servidor para estar actualizando de manera periodica unas imagenes de una estacion meteorológica saludos ojala alguien pueda ayudarme
[...] Hasta este punto se ha hecho el envío al servidor, pero nos hace falta un script en el servidor que se encargue de recibir y guardar este archivo. En nuestro caso utilizaremos PHP, para ello nos basaremos en el ejemplo Upload de Archivos con PHP. [...]
Hola el codigo funciona de maravilla con la unica restriccion de que solo archivos menores de los 2mb se pueden subir, hay alguna forma de corregir esa limitacion para que acepte archivos de mayor peso
Hola el codigo a mi tambien me funciona muy bien, ahora lo que quiero es subir muchas imagenes y mostrarlas me podrias ayudar de antemano gracias….
Hola! yo si piedo subir archivos, el problema es que quiero que el usuario presione un boton de aceptar para confirmar la sobreescritura de un archivo, alguien tiene una idea.
Saludos
Una pregunta sencilla: la carpeta “files” debe estar en la misma carpeta donde está el archivo upload o debe estár en el raíz del sitio.
Gracias.
Hola:
Tengo la siguiente consulta.
Para proteger los archivos cree una carpeta “archivos” en la raiz del sitio, al mismo nivel de www o public_html y con permiso 777.
Mi pregunta es como puedo mostrar los archivos de esta carpeta y hacer un link a cada uno de ellos.
Hola me encanto el tutorial y lo estoy usando bueno para empezar soy un estudiante de turismo y quiero compartir mis imágenes con mis amigos y para que ellos también suban y es perfecto pero yo quiero que se muestre en imágenes en miniatura y me salio bien puedes verlo en el siguiere link:
http://www.konchukos.com/cenfo/upload.php
mi consulta es que tengo que hacer para que me muestre imágenes en miniatura sin tener que cargarme todo el archivo por que es pesado mi idea es llegar a, cuando termine de cargar la imagen que me muestre una imagen en miniatura pero no el archivo completo sino otra imagen que PHP se encargue de crear una imagen pequeño y me muestre luego cuando hago click enzima de la imagen pequeño me muestre la imagen original en tamaño original en este caso grande, Gracias por tu ayuda
Solo una pregunta. ¿Donde pongo la carpeta file?
Gracias
Gracias!!!!, ya me funciono!
Hola unijimpe Felicidades me ha servido de mucho tu informacion
Me podrias ayudar resulta que tengo el siguiente caso tengo mi formulario donde se capturan incidentes y se suben imagenes pero tenia la idea de poner como prefijo de la imagen el numero de registro asi como tu pones para evitar que se dupliquen me podrias ayudar con la sintaxis.te lo agradezco
Muy buen aporte.. se agradece.
Muy bueno, una pregunta, lo codeaste vos?
Otra, al subir me tira 500 server internel error ya le di 777 las carpetas.
te dejo la direde dodne esta subido para que veas…
http://mierdamierda.org/upload1/
saludos
Hola, como le hago para evitar que se muestren tantos links, solo quisiera que se mostrara uno y al al subir un archivo cambie pero que solo sea un link. gracias
Hola yo quiero elegir el destino de adonde copiar el archivo en el servidor y hice este codigo:
[Seleccione el destino]
LEGISLACION/MUNICIPALES/COMUNICACIONES/Año 2007/
LEGISLACION/MUNICIPALES/DECRETOS/Año 2007/
LEGISLACION/c/
y el archivo php correspondiente:
$directorio = $_POST['destino']; //directorio donde va a ir el archivo
if (move_uploaded_file($_FILES['archivo_usuario']['tmp_name'], $directorio . $_FILES['archivo_usuario']['name']))
{echo “El archivo fue subido con éxito.”;
}
else
{
echo “Error al intentar subir el archivo.”;
}
el problema es que no me envia la variable destino como quisiera por lo que no puede copiar el archivo.
Saludos
Bueno no se me copio lo del codigo html, pero puedo decirles que es un codigo comun de subida con la diferencia que ademas tiene un formulario tipo combobox que tiene las direcciones disponibles para subir el archivo y es enviada por POST en una variable que se llama ‘destino’.
Mis saludos ante todo.
Desearía saber porque despues de subir todos los archivos al servidor al presionar el botón UploadFile me sale éste mensaje: No input file specified.
Ageadecería su pronta respuesta.
Saludos.
Hermano excelente tu codigo pero solo tengo una duda… como puedo hacer para que al lado del nombre del archivo me salga una opcion de eliminar… para eliminar ese archivo(en mi caso lo estoy usando para fotos pero use el mismo de archivos y me funciona al pelooo espeor tu pronta repsuesta gracias)
siiiiiiii queremos la opcion ELIMINAR la foto al lado del nombre :D seria muy amable de tu parte hacer ese cambio :D
Muy buen tutorial pero el problema que tengo es cuando lo subo al servidor me aparece el siguiente warning:
Warning: copy(files/9ffa26_maloSmall.jpg) [function.copy]: failed to open stream: Permission denied in /usr/local/psa/home/vhosts/mezie4.com/httpdocs/UPLOAD/uploadfiles.php on line 13
este es la liga de mi pagina donde estoy haciendola prueba:
http://www.mezie4.com/UPLOAD/uploadfiles.php
Saludos
Saludos
Tengo una duda sobre que version de php estas tabajando este upload.
Gracias
Felicitaciones por el blog y por tu buena disposicion. He recorrido varios foros consultando esto y todos me mandan a freir huevos.
baje el ejemplo qu epusiste y funciona perfectamente. al fin puedo subir archivos al host.
Pero mi duda es similar a las de piccolox. Ya que yo quisiera adjuntar una imagen al correo que me llega de un formulario de contacto.
He leido varios asuintos similares y segun investigue hay un scrip cgi para hacerlo llamado totmail.
Pero quisiera saber si a traves d ephp se pueden enviar formularios con imagenes adjuntas a un correo especifico.
( lei un tutorial de phpmailer que publicaste pero la verdad ese si que no lo pude hacer funcionar)
espero que puedas ayudarme. muchas gracias
Hola Paulo, en realidad lo que estas buscando es enviar email con archivos adjuntos (en tu caso imagen), para ello puedes leer:
http://blog.unijimpe.net/enviar-email-con-adjuntos/
[...] una de las tareas más comunes en el desarrollo de aplicaciones con PHP del cual hemos comentado en Upload de Archivos con PHP, normalmente los archivos que suben son como máximo 2Mb. Pero hay problemas cuando se quieren [...]
[...] una de las tareas más comunes en el desarrollo de aplicaciones con PHP del cual hemos comentado en Upload de Archivos con PHP, normalmente los archivos que suben son como máximo 2Mb. Pero hay problemas cuando se quieren [...]
hola quetal tengo un problema
necesito que cuando suba la imagen a la carpeta file se guarde (todas las imagenes) con un mismo nombre o consecutivos ejemplo foto1,foto2,ect
Exelente tutorial espero que sigas mostrando de esta manera tan detallada.
Necesito hacer lo mismo para subir directamente a la BD y luego si necesito mostrar alguna imagen lo traigo con un select.
Xfavor necesito su ayuda ya que he buscado mucho pro no he encontrado la solucion a este problema.
Lo recomendable es guardar los archivos en una determinada carpeta y en la base de datos se guarda la ruta donde se encuentra el archivo. Esto se hace para no recargar la base de datos y de paso te evitas problemas de codificación.
hola como ago para que cuando suba la imagen se publique en una pagina
hola.
Soy nuevo en esto, descargue los archivos, el archivo upload lo guarde como html para poder verlo, al darle subir archivo me aparece el codigo de la pagina y no sube nada, le tengo que hacer algo al codigo antes de verlo en el explorador o necesito algun software, podrian ayudarme.
gracias
Hola
Mi pregunta esta en relación a otro tema casi parecido:
Resulta que mi proveedor me ha bloqueado para no poder subri fotos ni bajar ningun archivo de internet como lo desbloqueo pues necesito estas funciones urgentemente.
Gracias
Nueva pregunta y como podria hacer esto???
al subir los archivos como guardo la ruta del mismo en la Base de Datos???, para luego cuando sea necesario llamar al archivo para mostrarlo en una pagina.
Favor si podrian ayudarme con este tema o poner un post sobre esto ya que es muy importante. Gracias por la respuesta Anterior!!!
Genial!! he probado este metodo y la verdad que me funcionó a la primera, muchas gracias por el aporte en serio!
Saludos!
Un grande, este es el mejor tutorial, en ninguno lo entendi mejor que en este. GRACIAS!!!!
Carlos
URUGUAY
Hola… excelente el codigo…. lo probe y me funciono a la primera vez … solo tengo una pregunta… Todo me funciona de lo mejor, subos los archivos, lo puedo ver , pero a la hora de irme a la carpera flies no los puedo ver ? porque es esto. gracias por la ayuda
PD el codigo del borrar archivo seria genial…
Listo… ya lo arregle…
Pero si…. el codigo para borrar estaria genial
Gracias
Excellente pero mira como hago para que solamente sube aplicacion osea me explico archivos .rar .zip .exe .gz ???
Hola amigos!! gusto en saludarlos primero que nada excelente tutorial unijimpe.
Disculpen lo que pasa es que quisiera saber como hacerle de que si por ejemplo hay una imagen con el mismo nombre en servidor, que me pregunte si deseso sobreescribirlo y si le doy si que lo realize
gracias estare en espera de alguna ayuda
Hola, muy bueno el tutorial.
Yo quisiera saber como hacer para que una imagen que suba un navegante, cambie la pagina.
Porque quiero hacer que se pueda subir una imagen para realizar una zapatilla personalizada y que vea como quedará aproximadamente.
Gracias
hola, muy buen tutorial.
Yo quisiera saber por que cuando subo un archivo y lo intento abrir me dice que esta dañado
Saludos amigo!
Ya he podido cargar imagenes en una carpeta para tal fin.. pero como hago para vincular esta imagen con un registro de la base de datos hecha en Mysql? Mi base de datos ya tiene un campo llamado FOTO pero como hago para llenar esta campo con la dirección de la carpeta IMAGEN donde estan almacenadas las imagenes de cada registro de mi base de datos? Por mas que le doy vueltas no consigo relacionarlo…
Me podrias ayudar!
Muy agradecido!
un rapido resumen …
logre enviar fotos a carpeta dejando grabado el nombre de foto en DB…resumen
$ruta=’ficherosSubido/’;//carpeta que tiene las fotos
despues hago una colsulta a DB extrallendo el nombre de la foto.
no logro mostrar la foto. ni con fopen($ruta,”modo”);
“a la ruta le añado el nombre de la foto”, mediante :
$ruta = ‘ficherosSubidos/’;
echo $ruta.$nombre;
muestrala ruta correcta pero no sale la foto?? !!!
help pliss
Muy buen sitio esta todo super claro y los comentarios son bastante buenos saludos desde Chile !!!!
Hola esta herramienta esta muy buena y me sirve mucho, tembien me funciona a la perfeccion.
Pero mi consulta es la siguiente:
Como coloco una barra de progreso para sabes cuanto tarda en subir el archivo??
Hago todo pero cuando pinto
echo “arcvhivo”.$archivo;
echo “tmp_name”.$HTTP_POST_FILES['archivo']['tmp_name'];
el archivo si que lo trae, pero el tpm_name me llega en blanco.
Alguien me puede ayudar?

