Foros del Web » Programando para Internet » PHP »

Subir Archivos al servidor

Estas en el tema de Subir Archivos al servidor en el foro de PHP en Foros del Web. Hola a todos, la semana pasada intenté crear un par de páginas para subir archivos al servidor, intenté de todo, pero no pude hacer que ...
  #1 (permalink)  
Antiguo 28/03/2005, 09:38
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años, 8 meses
Puntos: 0
Exclamación Subir Archivos al servidor

Hola a todos, la semana pasada intenté crear un par de páginas para subir archivos al servidor, intenté de todo, pero no pude hacer que funcionara, esta es la descripción de mi problema:

Estoy utilizando PHP 5.0.2, MySQL 4.1.7, Apache 2.0 y estoy en una computadora que utiliza Windows XP SP2, tengo establecidas estas variables en el archivo php.ini:

file_uploads=On
upload_tmp_dir = "C:\Temp"
upload_max_filesize = 12M
register_globlals = On
safe_mode = On
max_execution_time = 30
display_errors = on

Tengo 2 páginas, el código para la primera página llamada Archivos.php es:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Subir Archivos</title>
</head>

<body>
<h2>Componer mensaje</h2>
<form method="post" action="ArchivosI.php" enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="250000">
Texto del mensaje:<br>
<textarea cols="50" rows="5" name="texto"></textarea>
<br><br>Archivo a adjuntar: <input type="file" name="f_adjunto">
<br><br><input type="submit" value="Enviar datos!">
</form>
</body>
</html>


y el de la segunda página llamada ArchivosI.php es:

<?php
foreach ($_FILES['f_adjunto'] as $clave => $valor)
echo "\$_FILES[$clave] : ($valor)<br>";

if(!is_uploaded_file($_FILES['f_adjunto']['tmp_name']))
{
$error=$_FILES['f_adjunto']['error'];
die("<h3>**Error: el archivo no se envió: $error </h3>");
chmod( "C:/Temp/Temp", 0755 );
copy($_FILES['f_adjunto']['tmp_name'], "C:/Temp/Temp/");
move_uploaded_file($_FILES['userfile']['tmp_name'], "C:/Temp/Temp/");
}

if($_FILES['f_adjunto']['type'] != 'application/x-zip-compressed')
echo "<h3>**Error: el archivo no está comprimido: </h3>";
?>


Lo raro está en que pruebo la primera página con un archivo de texto no vacío, y en la segunda página (de resultados) me muestra que no hay problema y que el archivo se subió con éxito, me da el nombre del archivo temporal y todo eso, pero busco el archivo en el disco duro y no está, este es un ejemplo de lo que me muestra la página de resultados:

$_FILES[name] : (perfil.txt)
$_FILES[type] : (text/plain)
$_FILES[tmp_name] : (C:\Temp\php6.tmp)
$_FILES[error] : (0)
$_FILES[size] : (11)

**Error: el archivo no está comprimido:



Esto lo probé con las configuraciones que ya les he mencionado, las carpetas a las que se hace referencia existen y tienen derechos de escritura para todos los usuarios. Adicionalmente, lo probé en mi casa utilizando Fedora Core 2 como sistema Operativo, PHP 4.1.3, con el código modificado en las referencias de las rutas y me muestra el mismo resultado sin que exista realmente en el disco duro, Alguien puede ayudarme con esto por favor?
  #2 (permalink)  
Antiguo 28/03/2005, 10:12
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años, 8 meses
Puntos: 0
Ya está resuelto

Adivinen qué, ya lo pude resolver parcialmente, cambié el código de ArchivosI.php para que quedara así, y ya no hay problema, ahora puedo mover o hacer lo que quiera con el archivo que se sube:

<?php
$Cambiar=FALSE;
$Copiar = FALSE;
$Mover = FALSE;
foreach ($_FILES['f_adjunto'] as $clave => $valor)
echo "\$_FILES[$clave] : ($valor)<br>";
if(!is_uploaded_file($_FILES['f_adjunto']['tmp_name']))
{
$error=$_FILES['f_adjunto']['error'];
die("<h3>**Error: el archivo no se envió: $error </h3>");
chmod( "C:/Temp/Temp", 0755 );
/*$Copiar=copy($_FILES['f_adjunto']['tmp_name'], "C:/Temp/Temp/");
$Mover=move_uploaded_file($_FILES['userfile']['tmp_name'], "C:/Temp/Temp/");*/
}
$Cambiar=rename($_FILES['f_adjunto']['tmp_name'], "C:\\Temp\\".$_FILES['f_adjunto']['name']);
$Copiar=copy("C:\\Temp\\".$_FILES['f_adjunto']['name'], "C:\\Temp\\Temp\\".$_FILES['f_adjunto']['name']);
//$Mover=move_uploaded_file($_FILES['f_adjunto']['tmp_name'], "C:\\Temp\\Temp");*/
echo "Cambiar es ". $Cambiar . ", Copiar es ". $Copiar ." y Mover es ". $Mover;
if($_FILES['f_adjunto']['type'] != 'application/x-zip-compressed')
echo "<h3>**Error: el archivo no está comprimido: </h3>";
?>



Espero que el código les sea de utilidad. BYE
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:15.