jesuli | Fecha: Viernes, 2010-01-01, 0:04 AM | Mensaje # 1 |
Teniente
Grupo: Administradores
Mensajes: 77
Estatus: Offline
| Subir fichero a servidor usando php En muchas ocasiones deseamos que el usuario pueda subir fichero a nuestro foro, por ejemplo deja que suba su avatar o la imagen de su firma. Veamos como hacer esto con php Los primero que tenemos que hacer es crear un formulario en html, para que el usuario pueda subir su fichero, por los tanto crearemos una pagina html que contendrá un cuadro de texto, y dos botones, uno para buscar el fichero por el disco duro, y el otros para enviar el fichero a servidor. La pagina que tendrá el formulario la vamos a llama formulario.html Copia el siguiente código en la pagina formulario.html Code <html> <body>
<form action="subirfichero.php" method="post"enctype="multipart/form-data"> <label for="Archivos">Nombre Fichero :</label> <input type="file" name="Archivos" id="Archivos" /> <input type="submit" name="submit" value="Submit" /> </form>
</body> </html> Tememos el formulario ya creado, pero ante vamos a explicar una partes de código de formulario.html. la etiqueta necesita una llamada a fichero que va a tener el control de los que se enviar por medio de post. en este caso, será una llamada a fichero de nuestro script llamado SubirFichero.php. el atributo Code multipart / form-data se usar cuando se va a subir fichero binario el atributo type de la etiqueta se utilizar para trata los datos como un fichero. una vez explicado esta partes vamos a crear ahora el script que subiera el fichero a servidor. Crea un fichero llamado SubirFichero.php y pega y copia este código en el fichero.
Code if ($_FILES["file"]["error"] < 0) { echo "Return Code: " . $_FILES["Archivos"]["error"] . "<br/>"; } else { echo "nombre de fichero : " . $_FILES["Archivos"]["name"] . "<br/>"; echo "Tipo: " . $_FILES["Archivos"]["type"] . "<br/>"; echo "Tamaño: " . ($_FILES["Archivos"]["size"] / 1024) . " Kb<br/>"; echo "Carpeta tempora: " . $_FILES["Archivos"]["tmp_name"] . "<br/>"; } } else { echo "Fichero invalido no permitido"; } ?> Creamos un array global, el primer parámetro, es el fichero enviado por el formulario, el segundo es un índice que recibe, que puede ser los siguientes. $ _FILES [ "Archivo"] [ "name"] - el nombre del archivo cargado $ _FILES [ "Archivo"] [ "tipo"] - el tipo de archivo subido $ _FILES [ "Archivo"] [ "size"] - el tamaño en bytes del archivo subido $ _FILES [ "Archivo"] [ "tmp_name"] - el nombre de la copia temporal de archivo almacenado en el servidor $ _FILES [ "Archivo"] [ "error"] - el código de error a subir el ficheros el bloque if comprueba si hay algún error, si no hay ningún error ,pasa a bloque else que cargara el fichero a servidor, en una carpeta tempera llamada tmp_name si probamos es script veremos que funciona ,pero claro estar? tal como estar? el usuario podrá subir cualquier fichero a servidor, y de cualquier tamaños, y nosotros queremos que solo suban imágenes de una determinada extensión, y de un tamaños configurado por nosotros, vamos a modificar el script de fichero. los nuevo código que vayamos añadiendo a script sera de color rojo.. | Añadiendo Restricciones a la subida de fichero. Vamos a añadir algunas restricciones a la carga de los archivos.. El usuario sólo puede cargar . gif o. archivos JPEG y el tamaño del archivo debe tener menos de 20 KB: Vosotros podéis y añadiéndole mas restricciones, bastaría y añadiéndoles las extesione de los fichero que desea que el usuario suba. Aquí esta el código de script de código nuevo añadido de color rojo. if ((($_FILES["Archivos"]["type"] == "image/gif") || ($_FILES["Archivos"]["type"] == "image/jpeg") || ($_FILES["Archivos"]["type"] == "image/pjpeg")) && ($_FILES["Archivos"]["size"] < 20000)) { if ($_FILES["file"]["error"] < 0) { echo "Return Code: " . $_FILES["Archivos"]["error"] . " "; } else { echo "nombre de fichero : " . $_FILES["Archivos"]["name"] . " "; echo "Tipo: " . $_FILES["Archivos"]["type"] . " "; echo "Tamaño: " . ($_FILES["Archivos"]["size"] / 1024) . " Kb "; echo "Carpeta tempora: " . $_FILES["Archivos"]["tmp_name"] . " "; } } else { echo "Fichero invalido no permitido"; } ?> La parte mas importante de código el.. if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) Aquí es donde se puede ir añadiéndole, los tipos de archivos, que se quiera subir a servidor. basta ir añadiéndoles en ese lugar de código. | Guardar el archivo subido Los ejemplos anteriores realmente los fichero subido no se guardar en nuestro foro, si no en una carpeta temporal. Creada por php. esto quiere decir que los fichero almacenado en esa carpeta temporal, se pierde una vez que nuestro script acaba su ejecución.. Por los tanto antes que nuestro script deje de ejecutarse, tenemos que copiar los ficheros subidos a esa carpeta temporal, y moverlo a otros lugares para su almacenamiento permanente. Tendremos que crear una carpeta llamada upload para guarda los ficheros subidos, la carpeta tiene que tener permiso de escritura permiso 0777 En este ejemplo se supone que a creado la carpeta upload en la raiz de tu servidor. Aunque vosotros le podéis poner cualquier otro nombre de carpeta , indicándole la ruta de esa carpeta a script para guardar los ficheros hay. Modificar tu script de modo que ahora quede así if ((($_FILES["Archivos"]["type"] == "image/gif") || ($_FILES["Archivos"]["type"] == "image/jpeg") || ($_FILES["Archivos"]["type"] == "image/pjpeg")) && ($_FILES["Archivos"]["size"] < 20000)) { if ($_FILES["file"]["error"] < 0) { echo "Return Code: " . $_FILES["Archivos"]["error"] . " "; } else { echo "nombre de fichero : " . $_FILES["Archivos"]["name"] . " "; echo "Tipo: " . $_FILES["Archivos"]["type"] . " "; echo "Tamaño: " . ($_FILES["Archivos"]["size"] / 1024) . " Kb "; echo "Carpeta tempora: " . $_FILES["Archivos"]["tmp_name"] . " ";
if (file_exists("upload/" . $_FILES["Archivos"]["name"])) { echo $_FILES["Archivos"]["name"] . " Archivos ya existe. "; } else { move_uploaded_file($_FILES["Archivos"]["tmp_name"], "upload/" . $_FILES["Archivos"]["name"]); echo "Fichero subido a la carpeta: " . "upload/" . $_FILES["Archivos"]["name"]; } } } else { echo "Fichero invalido no permitido"; } ?> El anterior script comprueba si el archivo ya existe, si no existe se copia el archivo a la carpeta especificada. Y si el fichero ya existe dar un error. La función move_uploaded_file(); de php necesita el nombre de fichero mas la carpeta temporal luego necesita la ruta de la carpeta donde se va a guardar el fichero mas el nombre de fichero a guardar Ahora o toca a vosotros dale utilidad y mejora el script.. |
[center][/center] http://www.codigocero.ucoz.es
|
|
| |