subir file al servidor a una subcarpeta
Publicado por julio (54 intervenciones) el 29/05/2010 20:47:42
¿Cómo defino la ruta relativa de la carpeta donde quiero poner el archivo subido con un campo file de html?.
Por una cuestion de ORGANIZACION , tengo oganizado en carpetas y subcarpetas el sitio. Entonces, el script que sube los archivos esté en una subcarpeta del sitio: wwww/fuentes/carga_de_txt
Y el script Index.php reside en la carpeta www/fuentes
Y para seguir un ordén me gustaria que los archivos que subo se guarden la subcarpeta de
carga_de_txt/txt_plano. O sea asi:
www/fuentes/carga_de_txt/txt_plano
He definido la ruta relativa como ../txt_plano
../ txt_plano/
/ txt_plano
../../txt_plano y otras posibilidades más, pero no me funcionaron.
Mi problema es que al archivo sólo lo guarda en la carpeta donde esta el script que carga el archivo www/fuentes/carga_de_txt.
¿Hay alguna forma de hacer que el archivo leído se guarde en la subcarpeta txt_plano?
<?
if ($Enviar=="")
{
?>
<form method="POST" action="<? echo $_SERVER['PHP_SELF']?>" enctype="multipart/form-data">
Leer TXT
<div style='margin-left:1em;'>
Por favor, click en Examinar para Buscar el archivo a recuperar
<input type="file" name="userfile" size="50" >
</div>
<div style='padding-left:14em;'>
<input type="submit" value="Enviar > >" name="Enviar">
</div>
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
</form>
<?
}
else
{
//datos del arhivo
$nombre_archivo = $_FILES['userfile']['name'];
$tipo_archivo = $_FILES['userfile']['type'];
$tamano_archivo = $_FILES['userfile']['size'];
echo 'nombre '.$nombre_archivo .'<br>';
echo 'tipo '.$tipo_archivo .'<br>';
//compruebo si las características del archivo son las que deseo
if (!(strpos($tipo_archivo, "txt")) && ($tamano_archivo > 1000000))
{
echo "La extensión o el tamaño de los archivos no es correcta.
}
else
{
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $ruta_nombre_archivo))
{
$nombre_archivo_ruta="\\txt_plano\\".$_FILES['userfile']['name'];
$ruta_nombre_archivo="../txt_plano/" . $_FILES['puserfile'][name];
echo $ruta_nombre_archivo."<br>" ;
///copy($_FILES['archivo']['tmp_name'], $ruta_nombre_archivo);
echo "El archivo ha sido cargado correctamente";
}
else
{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
}
El script en general esta funcionando bien, sólo que el archivo es guardado en la misma carpeta donde esta el script y en la medida de lo posible me gustaria que se guarde en una subcarpeta de la carpeta del script.
Desde ya muchas gracias por vuestra ayuda.
Por una cuestion de ORGANIZACION , tengo oganizado en carpetas y subcarpetas el sitio. Entonces, el script que sube los archivos esté en una subcarpeta del sitio: wwww/fuentes/carga_de_txt
Y el script Index.php reside en la carpeta www/fuentes
Y para seguir un ordén me gustaria que los archivos que subo se guarden la subcarpeta de
carga_de_txt/txt_plano. O sea asi:
www/fuentes/carga_de_txt/txt_plano
He definido la ruta relativa como ../txt_plano
../ txt_plano/
/ txt_plano
../../txt_plano y otras posibilidades más, pero no me funcionaron.
Mi problema es que al archivo sólo lo guarda en la carpeta donde esta el script que carga el archivo www/fuentes/carga_de_txt.
¿Hay alguna forma de hacer que el archivo leído se guarde en la subcarpeta txt_plano?
<?
if ($Enviar=="")
{
?>
<form method="POST" action="<? echo $_SERVER['PHP_SELF']?>" enctype="multipart/form-data">
Leer TXT
<div style='margin-left:1em;'>
Por favor, click en Examinar para Buscar el archivo a recuperar
<input type="file" name="userfile" size="50" >
</div>
<div style='padding-left:14em;'>
<input type="submit" value="Enviar > >" name="Enviar">
</div>
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
</form>
<?
}
else
{
//datos del arhivo
$nombre_archivo = $_FILES['userfile']['name'];
$tipo_archivo = $_FILES['userfile']['type'];
$tamano_archivo = $_FILES['userfile']['size'];
echo 'nombre '.$nombre_archivo .'<br>';
echo 'tipo '.$tipo_archivo .'<br>';
//compruebo si las características del archivo son las que deseo
if (!(strpos($tipo_archivo, "txt")) && ($tamano_archivo > 1000000))
{
echo "La extensión o el tamaño de los archivos no es correcta.
}
else
{
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $ruta_nombre_archivo))
{
$nombre_archivo_ruta="\\txt_plano\\".$_FILES['userfile']['name'];
$ruta_nombre_archivo="../txt_plano/" . $_FILES['puserfile'][name];
echo $ruta_nombre_archivo."<br>" ;
///copy($_FILES['archivo']['tmp_name'], $ruta_nombre_archivo);
echo "El archivo ha sido cargado correctamente";
}
else
{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
}
El script en general esta funcionando bien, sólo que el archivo es guardado en la misma carpeta donde esta el script y en la medida de lo posible me gustaria que se guarde en una subcarpeta de la carpeta del script.
Desde ya muchas gracias por vuestra ayuda.
Valora esta pregunta


0