Tratamiento de archivos

Hola experto, de antemano gracias por la labor que realizáis.
Entro al rollo. Tengo una base de datos mysql la cual gestiono con php, no me acuerdo de la version.
Lo que necesito es gestionar archivos doc y xml (guardarlos en el servidor y que solo puedan bajarlos ciertas personas que tengan permisos mediante la página web) y verás yo había pensado dos maneras pero no encuentro información al respecto.
¿La primera subiendo los archivos al servidor mediante php a un directorio del servidor como por ejemplo /documentos pero claro como inconveniente tiene que se los puede bajar cualquiera no?
La segunda manera subiendo los archivos a la base de datos mysql. Se subir imágenes pero no se subir archivos de excel o de word. ¿Esto sería lo ideal pero como se suben estos archivos?
Muchas gracias experto.
Respuesta
1
Para subir archivos a un servidor, lo único que debemos hacer es poner en un formulario un campo de archivo como los siguientes:
000
001
002
003
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="submit" value="Subir imagen" />
</form>
Al enviar el formulario, el navegador envía automáticamente el archivo del campo a la carpeta temporal del servidor, pero el problema es una vez en esta carpeta cómo moverlo a la carpeta que se nos antoje, es importante que el método de envío sea POST y que se codifique como multipart/form-data.
Y aquí es donde entra en acción PHP y la función copy que copiará el archivo subido de la carpeta temporal a la carpeta que nosotros le digamos e incluso con el nombre que le pongamos.
Verás que para acceder al archivo subido no lo haremos desde $_POST sino desde $_FILES, esto es porque PHP ya ha guardado el archivo a una carpeta temporal y no podremos acceder a el como si fuera un campo de formulario (en memoria), sino que será completamente distinto.
000
001
002
003
<?
$destino = 'uploaded';
copy($_FILES['file']['tmp_name'], $destino.'/'.$_FILES['file']['name'])
?>
Donde $_FILES['file']['tmp_name'] identificara el archivo temporal subido al servidor, $destino, la carpeta en la que lo queremos mover y $_FILES['file']['name'] el nombre original del archivo.
Además también podemos conocer otros parámetros del fichero subido como por ejemplo el tamaño, vamos a ver un ejemplo:
000
001
002
003
004
005
006
007
008
009
<?
$destino = 'uploaded';
// Leemos el tamaño del fichero
$tamano = $_FILES['file']['size'];
// Comprovamos el tamaño
if($tamano < 500){
copy($_FILES['file']['tmp_name'], $destino.'/'.$_FILES['file']['name'])
}
else echo "El tamaño es superior al permitido";
?>
Tambien podemos saber el tipo de archivo subido con la siguiente variable: $_FILES['file']['type'];
Nota: Para versiones anteriores a la 4.0.1 de PHP, en lugar del vector $_FILES, debemos usar $HTTP_POST_FILES.
Nota 2: Tenéis que recordar dar permisos a la carpeta (777) donde subáis los archivos... Echad un vistazo vía FTP o a través e vuestro panel de control. De otra manera que generará un error por "denied permission".

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas