Hola gente,
Necesito modificar este codigo para que los archivos se suban a una carpeta en mi servidor y que queden "para siempre" digamos, que no sean temporales. Como no entiendo nada de php no puedo modificar el codigo yo, alguno no le puede modificar algo para que quede como lo necesito? Por favor!
Este es el codigo que vi en el FAQ:
Cita:
Iniciado por GhostRider Tema: Archivos
Pregunta: ¿Cómo puedo subir archivos a través de un formulario?
Respuesta: Con el siguiente ejemplo.
Código PHP:
<?php
if (isset($_POST['submit'])) {
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo
if(move_uploaded_file($_FILES['fichero']['tmp_name'], $_FILES['fichero']['name'])) { // se coloca en su lugar final
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
echo "<br><hr><br>";
}
}
// A continuación el formulario
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
Archivo: <input name="fichero" type="file">
<input name="submit" type="submit" value="Upload!">
</form>
Funciona de la siguiente manera:
El código sube un archivo via
HTTP POST, este se guarda automaticamente con un nombre y en una carpeta temporales del servidor mientras corre el codigo, despues el mismo servidor lo borra (por seguridad). La función is_uploaded_file() verifica que este procedimiento haya sido exitoso. Posteriormente el archivo es movido a su posición final con la función move_uploaded_file)
Notas:- Es necesario el atributo enctype="multipart/form-data" del formulario, es lo que indica que se están enviando archivos.
- El primer key de $_FILES corresponde al name del filebox; En el ejemplo "fichero".
- Si se quiere condicionar la carga del archivo según su peso y/o tipo se deberá hacer a través de los datos arrojados por la variable superglobal $_FILES antes de colocarlo en su posición final. Por ejemplo:
Código PHP:
If(is_uploaded_file($_FILE['fichero']['tmp_file']) {
If($_FILES['fichero']['type']=="image/jpeg") {
// Proseguimos solo si se trata de un JPG
move_uploaded_file("...etc...");
} else echo "El archivo no es una imágen JPG";
// bien puede condicionarse $_FILES['fichero']['size'] > XXXX
// donde 'XXXX' es un número entero representando los bytes máximos del archivo
- En el ejemplo el archivo es guardado en la misma carpeta, si se quiere modicar esto ha de cambiarse el parámetro correspondiente de la función move_uploaded_file(). Por ejemplo:
Código PHP:
$ruta= "carpeta/".$_FILES['fichero']['name']; // Se guardaría dentro de "carpeta" con el nombre original
// $ruta= "carpeta/nuevo_nombre.jpg"; si también se quiere renombrar
move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta);
// Puede guardarse $ruta en una Base de Datos para su uso posterior
- El ejemplo funciona con versiones PHP 4.1.x ó superior y con register_globals en OFF.
- La carga de archivos es dependiente de la configuración del servidor: disponer de permisos, no exeder el tamaño límite, el nombre de la carpeta personal, etc.
Espero les sea de utilidad.