Difference between revisions of "Subir archivo a servidor"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
El siguiente ejemplo de como subir un archivo al servidor | El siguiente es un ejemplo básico de como subir un archivo al servidor, y por lo tanto al momento de utilizarlo en producción, se deben agregar validaciones, como por ejemplo tipo de archivo, peso del archivo, etc. | ||
* Código html para el formulario de subida de archivos (Permite subir varios archivos a la vez). | * Código html para el formulario de subida de archivos (Permite subir varios archivos a la vez). |
Latest revision as of 16:47, 3 December 2014
El siguiente es un ejemplo básico de como subir un archivo al servidor, y por lo tanto al momento de utilizarlo en producción, se deben agregar validaciones, como por ejemplo tipo de archivo, peso del archivo, etc.
- Código html para el formulario de subida de archivos (Permite subir varios archivos a la vez).
<html>
<head>
<title>Sube Archivos</title>
</head>
<body>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<ul>
<!--Si se desea limitar la subida de archivos a uno solo por vez, solo se debe eliminar
la palabra 'multiple' de la siguiente linea-->
<li><input type="file" name="files[]" multiple/></li>
<li><input type="submit" value="Subir Archivo"/></li>
</ul>
</form>
</body>
</html>
- Lo primero que se hace es extraer los datos del o los archivos subidos haciendo uso de un ciclo 'foreach'(files es el nombre del input del formulario con el que se seleccionan los archivos a subir)
<?php
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){
$file_name = $_FILES['files']['name'][$key];
$file_size = $_FILES['files']['size'][$key];
$file_tmp = $_FILES['files']['tmp_name'][$key];
$file_type = $_FILES['files']['type'][$key];
- $_FILES['files'] es un arreglo que contiene información del archivo que se esta subiendo. La información entregada por este arreglo puede ser utilizada para realizar validaciones, por ejemplo el peso del archivo:
- name: corresponde al nombre del archivo.
- size: corresponde al tamaño en bytes.
- tmp_name: corresponde a una ubicación temporal que se le da al archivo mientras es procesado.
- type: corresponde al MIME type del archivo.
- El siguiente paso corresponde a mover el archivo desde la ubicación temporal donde se encuentra, hacia el directorio deseado.
// Se define la ubicación final del archivo.
$desired_dir = 'ruta/donde/quedara/el/archivo';
// Se comprueba si el directorio deseado existe. De no ser así, es creado.
if (is_dir($desired_dir) == false) {
mkdir("$desired_dir", 0700);// Directorio se crea con mkdir y se le dan los permisos deseados (en este caso 0700).
}
// Se comprueba si el archivo ya existe con 'is_file()'.
//Si ya existe, se toma la acción necesaria.
//En el caso de este ejemplo se modifica el nombre agregando la hora al inicio con 'time()'.
if (is_file("$desired_dir/" . $file_name) == false) {
//move_uploaded_file mueve el archivo de la ubicación temporal a la definitiva.
move_uploaded_file($file_tmp, "/Users/camilo/Sites/pruebas/subeArchivos/uploads/" . $file_name);
} else {
// Se modifica el nombre agregandole la hora al inicio del nombre de archivo.
$new_dir = "/Users/camilo/Sites/pruebas/subeArchivos/uploads/" . time() . $file_name;
// Se mueve el archivo a su nuevo directorio.
rename($file_tmp, $new_dir);
}
}