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. Qué tal, tengo una página que pretende subir archivos al servidor, estoy utilizando PHP y tengo establecida la variable upload_tmp_dir="C:\Temp" en el archivo de configuración ...
  #1 (permalink)  
Antiguo 23/03/2005, 12:40
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años
Puntos: 0
Exclamación Subir Archivos al servidor

Qué tal, tengo una página que pretende subir archivos al servidor, estoy utilizando PHP y tengo establecida la variable upload_tmp_dir="C:\Temp" en el archivo de configuración de php (php.ini).

Utilizo la página como prueba para implementar el subir un archivo, el código es el siguiente:


<!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 la página ArchivosI.php es así:

<?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>");
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>";
?>


En la página ArchivosI.php me aparece el mensaje de que sí ha subido el archivo, pero reviso el directorio y no contiene absolutamente nada, porqué pasa esto? alguien puede ayudarme?

Este es el resultado de la página ArchivosI.php:


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

**Error: el archivo no está comprimido:
  #2 (permalink)  
Antiguo 23/03/2005, 12:43
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años
Puntos: 0
Se me olvidó mencionar que la variable file_uploads=on la tengo establecida también en el archivo php.ini
  #3 (permalink)  
Antiguo 23/03/2005, 13:03
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 20 años, 2 meses
Puntos: 2
En primer lugar te falta una / en la carpeta donde los guardas es decir "c:/temp/temp/", segundo fijate q la carpeta donde estas mandando los archivos es temp dentro de temp, esta carpeta debe existir y tiene q tener los permisos (si es windows no te preocupes, hace lo q se le cante).
Saludos, espero q te sirva, sino vuelve a chiflar
__________________
Dios dira que esto no es justo, pero lo sera...
  #4 (permalink)  
Antiguo 23/03/2005, 13:17
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años
Puntos: 0
Gracias sebtev, ya probé lo que me dijiste y aún así no sube ningún archivo, estoy utilizando windows, por lo que creo que no hay problemas en cuanto a lo de los permisos, pero no sube ningún archivo, y mucho menos lo copia o lo mueve de lugar.

La carpeta C:/Temp/Temp sí existe.
  #5 (permalink)  
Antiguo 23/03/2005, 13:22
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 7 meses
Puntos: 9
usa los comandos CHMOD de php, y personaliza la carpeta C:/Temp/Temp con 755, para mas información checa www.php.net/chmod
  #6 (permalink)  
Antiguo 23/03/2005, 13:28
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años
Puntos: 0
Gracias lado2mx, pero tampoco funcionó
  #7 (permalink)  
Antiguo 23/03/2005, 15:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Esto no puedes hacerlo:
Código PHP:
copy($_FILES['f_adjunto']['tmp_name'], "C:/Temp/Temp");
move_uploaded_file($_FILES['userfile']['tmp_name'], "C:/Temp/Temp"); 
debes usar move_uploaded_file() sólo .. recuerda que dichas funciones NO "asumen" el nombre del archivo que ha de tener cuando lo copias o mueves .. debes especificarlo:

Código PHP:
move_uploaded_file($_FILES['f_adjunto']['tmp_name'],"./".$_FILES['f_adjunto']['name']); 
(y ojo con los nombres del "file="..."" )

El ejemplo debería subir (mover mejor dicho) el archivo subido hacia el mismo directorio que ejecutes tu ArchivosI.php .. Si quieres indicar una ruta concreta .. tendrás que indicarlo en el 2° parámetro de move_uploded_file() .. concatenando la ruta que quieras con el nombre del archvio que le vas a dar .

El archivo por lo demás sube bien .. pues lo tienes bajo el nombre temporal que PHP le otorga y en la ruta:
C:\Temp\php24.tmp

Esa es la ruta donde PHP subirá todo archivo que se haga por HTTP .. luego es cosa de que tu lo muevas a su destino definitivo.

Un saludo,
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 06:18.