Como subir archivos a mi web

Que tal amigos, mi duda es saber como recibir archivos de los visitantes de mi página, algo así como cuando adjuntas un archivo a un correo, gracias miles...
Respuesta
1
A ver amigo el método más simple y practico es subir elementos directamente a una carpeta.. esto es lo más básico..
Para subir archivos a un servidor, lo único que debemos hacer es poner en un formulario un campo de archivo como los siguientes:
<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.
<?
$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:
<?
$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";
?>
También 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.
Esto es usando tecnología PHP como te darás cuenta..
Y si quieres luego listar el contenido de tu carpeta...
Vamos a ver cómo podemos conseguir una lista de los archivos y directorios contenidos en un directorio de nuestro servidor.
Para esto, abriremos un descriptor de fichero para el directorio usando la función opendir, luego leeremos los nombres de los archivos con la función readdir y finalmente eliminaremos el descriptor con closedir.
Veamos cómo sería:
<?php
$directorio=opendir($dir);
echo "<b>Directorio actual:</b><br>$dir<br>";
echo "<b>Archivos:</b><br>";
while ($archivo = readdir($directorio))
echo "$archivo<br>";
closedir($directorio);
?>
Pero vamos a mejorarlo un poco, gracias a la función is_dir podremos saber si tratamos con un archivo, y con esto y un poco de cuidado con los casos de directorios especiales ( . y .. ), podremos navegar por los directorios con un código cómo el siguiente:
<?php
$dir = (isset($_GET['dir']))?$_GET['dir']:"/";
$directorio=opendir($dir);
echo "<b>Directorio actual:</b><br>$dir<br>";
echo "<b>Archivos:</b><br>";
while ($archivo = readdir($directorio)) {
if($archivo == '.')
echo "<a href=\"?dir=.\">$archivo</a><br>";
elseif($archivo == '..'){
if($dir != '.'){
$carpetas = split("/",$dir);
array_pop($carpetas);
$dir2 = join("/",$carpetas);
echo "<a href=\"?dir=$dir2\">$archivo</a><br>";
}
}
elseif(is_dir("$dir/$archivo"))
echo "<a href=\"?dir=$dir/$archivo\">$archivo</a><br>";
else echo "$archivo<br>";
}
closedir($directorio);
?>
Pues de esta manera sencilla tendremos una lista de los archivos de nuestros directorios, y con esto y sabiendo forzar la descarga de un archivo podremos crear un servidor para descargas de forma sencilla.
Y listo.. más simple y perfecto que esto es imposible..
Si te gusto y satisface tus necesidades, no olvides cerra y valorar la pregunta...
O Agregarme a tus Expertos favoritos para futuros contactos.. CYA

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas