Foros del Web » Programando para Internet » PHP »

SOS en Upload de archivos

Estas en el tema de SOS en Upload de archivos en el foro de PHP en Foros del Web. Hola a todos!! estoy intentando cargar archivos al servidor, tengo esto: formulario.php: <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="archivo"> <input type="submit" value="Enviar"> </form> upload.php: <?php ...
  #1 (permalink)  
Antiguo 07/11/2005, 12:19
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 19 años
Puntos: 0
Exclamación SOS en Upload de archivos

Hola a todos!!

estoy intentando cargar archivos al servidor, tengo esto:

formulario.php:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="archivo"> <input type="submit" value="Enviar">
</form>

upload.php:
<?php
$archivo = $_POST["archivo"];
if($archivo !="") {
@copy($archivo, "/images/uploaded/");
echo "Upload realizado";
} else {
echo "Debes completar el campo para hacer el Upload";
}
?>

cuando lo corro me da el siguient error:
Notice: Undefined index: archivo in c:\Inetpub\wwwroot\plusoffice\upload.php on line 2

pero no se a q se debe ese error alguien puede ayudarme?? gracias d antemano!!!

caro_by
  #2 (permalink)  
Antiguo 07/11/2005, 12:20
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 19 años
Puntos: 0
Exclamación SOS en Upload de archivos

Hola a todos!!

estoy intentando cargar archivos al servidor, tengo esto:

formulario.php:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="archivo"> <input type="submit" value="Enviar">
</form>

upload.php:
<?php
$archivo = $_POST["archivo"];
if($archivo !="") {
@copy($archivo, "/images/uploaded/");
echo "Upload realizado";
} else {
echo "Debes completar el campo para hacer el Upload";
}
?>

cuando lo corro me da el siguient error:
Notice: Undefined index: archivo in c:\Inetpub\wwwroot\plusoffice\upload.php on line 2

pero no se a q se debe ese error alguien puede ayudarme?? gracias d antemano!!!

caro_by
  #3 (permalink)  
Antiguo 07/11/2005, 12:20
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 19 años
Puntos: 0
Exclamación SOS en Upload de archivos

Hola a todos!!

estoy intentando cargar archivos al servidor, tengo esto:

formulario.php:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="archivo"> <input type="submit" value="Enviar">
</form>

upload.php:
<?php
$archivo = $_POST["archivo"];
if($archivo !="") {
@copy($archivo, "/images/uploaded/");
echo "Upload realizado";
} else {
echo "Debes completar el campo para hacer el Upload";
}
?>

cuando lo corro me da el siguient error:
Notice: Undefined index: archivo in c:\Inetpub\wwwroot\plusoffice\upload.php on line 2

pero no se a q se debe ese error alguien puede ayudarme?? gracias d antemano!!!

caro_by
  #4 (permalink)  
Antiguo 07/11/2005, 12:29
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
debes usar $_FILES["archivo"], no $_POST["archivo"]


Saludos.
  #5 (permalink)  
Antiguo 07/11/2005, 12:45
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 19 años, 5 meses
Puntos: 7
a ver cambia
Código PHP:
<?php
$archivo 
$_POST["archivo"];
if(
$archivo !="") {
@
copy($archivo"/images/uploaded/");
echo 
"Upload realizado";
} else {
echo 
"Debes completar el campo para hacer el Upload";
}
?>
por
Código PHP:
<?php
$archivo
=$_FILES['archivo']['name'];     
if(
$archivo !="") {
      
move_uploaded_file($_FILES['archivo']['tmp_name'], "/images/uploaded/"$_FILES['archivo']['name']);  
      echo 
"Upload realizado";  
} else {
      echo 
"Debes completar el campo para hacer el Upload";
}
?>
y listo.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #6 (permalink)  
Antiguo 07/11/2005, 12:47
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 19 años, 5 meses
Puntos: 7
Cita:
Iniciado por alvlin
debes usar $_FILES["archivo"], no $_POST["archivo"]


Saludos.
Je je, y yo le respondi en otro de los tres que puso....

__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #7 (permalink)  
Antiguo 07/11/2005, 12:58
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 19 años
Puntos: 0
Holap, muchas gracias por responder, ya me funciono!!!! y disculpen por publicar el mensaje tantas veces, pense q mi maq se habia colgado y no habia publicado nada... gracias!!
  #8 (permalink)  
Antiguo 07/11/2005, 13:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En lugar de copy() deberías usar move_uploade_file() y sin el @ delante por el momento por qué ahí evitas que se muestren los mensajes de error que puedas tener (y ahora necesitas verlos si o si).

Por lo demás .. el archivo cuando lo subes (vía PHP por tu formulario HTML con su campo file y demás) genera un nombre de archivo "aletario" que le dá PHP para todo lo que subes por el:

$_FILES['archivo']['tmp_name']

Así que ese es el archivo que debes "mover" (con move_uploaded_file()) hacia su destino definitivo con el nombre original:

$_FILES['archivo']['name']

Y cuando te refieres a una ruta para mover tu archivo .. a ser posible que sea absoluta ..

Código PHP:
move_uploaded_file($_FILES['archivo']['name'],"c:\Inetpub\wwwroot\plusoffice\images\uploaded\".$_FILES['archivo']['name']); 
ó

Código PHP:
move_uploaded_file($_FILES['archivo']['name'],"images/uploaded/".$_FILES['archivo']['name']); 
(suponiendo que images/uploaded está bajo la estructura que contiene el script que va a hacer ese proceso).

Un saludo,
  #9 (permalink)  
Antiguo 07/11/2005, 13:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por Bytevamp
Je je, y yo le respondi en otro de los tres que puso....

Aquí los uní todos ...

Un saludo,
  #10 (permalink)  
Antiguo 08/11/2005, 05:57
 
Fecha de Ingreso: octubre-2005
Mensajes: 69
Antigüedad: 19 años
Puntos: 0
problemas para subir un archivo move_uploaded_file()

Hola a todos tengo el siguiente problema a pesar de leer las respuestas que dieron... tengo el archivo del formulario de la siguiente manera:

subiendo1.php
Código PHP:
<form action="upload1.php" method="post" enctype="multipart/form-data"
    
Archivo: <input name="archivo" type="file"
    <
input name="submit" type="submit" value="Upload!"
</
form
y el archivo upload1.php
Código PHP:
<?php 
    $carga 
$_FILES['archivo']['tmp_name'];
    
$origen $_FILES['archivo']['name'];
    
$destino "images/uploaded/".$_FILES['archivo']['name'];

if (
is_uploaded_file($carga)) {
    echo 
"El archivo "$origen ." fue cargado satisfactoriamente.<br>";

    
$aux2=move_uploaded_file($origen,$destino); 

    
readfile($carga);

    if(
$aux2) {echo"<br> ES VERDAD";}else{echo"<br> ES falso!!!!";}

} else {
   echo 
"Posible ataque de carga de archivo: ";

}
?>
y el resultado que me arroja es el siguiente:

El archivo hola.txt fue cargado satisfactoriamente.
HOLA MUNDO!!!!! (desde el archivo hola.txt)
ES falso!!!!

Es decir que NO!! se almacena el archivo en la direccion indicada de destino...

Gracias
__________________
Ana Martins
  #11 (permalink)  
Antiguo 08/11/2005, 06:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
No deberías hacer:
readfile($carga);

sino
readfile($destino);

que es donde realmente movistes tu archivo si es que lo llegó a mover.

prueba a ver que tiene $_FILES:
Código PHP:
echo "<pre>";
print_r($_FILES);
echo 
"</pre>"
Un saludo,
  #12 (permalink)  
Antiguo 08/11/2005, 06:57
 
Fecha de Ingreso: octubre-2005
Mensajes: 69
Antigüedad: 19 años
Puntos: 0
Auxilio..!!

Hola .. gracias por tu pronta respuesta....

coloque en el archivo subiendo1.php lo siguiente:
Código PHP:
<?php 
    $carga 
$_FILES['archivo']['tmp_name'];
    
$origen $_FILES['archivo']['name'];
    
$destino "images/uploaded/".$_FILES['archivo']['name'];

if (
is_uploaded_file($carga)) {
    echo 
"El archivo "$origen ." fue cargado satisfactoriamente.<br>";

    
$aux2=move_uploaded_file($origen,$destino); 

    
//readfile($destino);
    
echo "<pre>"
    
print_r($_FILES); 
    echo 
"</pre>"

    if(
$aux2) {echo"<br> ES VERDAD";}else{echo"<br> ES falso!!!!";}

} else {
   echo 
"Posible ataque de carga de archivo: ";

}
?>
Pero cuando realizo el readfile($destino) sale el siguiente error:

Warning: readfile(images/uploaded/hola.txt) [function.readfile]: failed to open stream: No such file or directory in c:\Inetpub\wwwroot\plusoffice\upload1.php on line 11

pues no se cargo el archivo en el lugar destino... ahora bien.. al realizar el
Código PHP:
echo "<pre>"
print_r($_FILES); 
echo 
"</pre>"
imprime lo siguiente:

Array
(
[archivo] => Array
(
[name] => hola.txt
[type] => text/plain
[tmp_name] => C:\php\uploadtemp\php288.tmp
[error] => 0
[size] => 15
)

)

Reviso en la direcion C:\php\uploadtemp\php288.tmp y no tengo ningun archivo.... Que ocurre??? tengo que hacer un cambio en el archivo de configuracion php.ini????

Gracias
__________________
Ana Martins
  #13 (permalink)  
Antiguo 08/11/2005, 07:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Extraño que $_FILES que reconozca el archivo y le dé nombre "temporal" pero no tengas tu archivo ahí .. (por eso el error en readfile()) ..

No sé que S.O. usas en tu servidor .. pero si corresponde dale permisos de escritura a ese directorio "C:\php\uploadtemp\" .. podría ser por ahí el problema.

Por cierto .. tu archivo es de "15 bytes" sólo? .. Prueba con archivos más grandes (unas decenas de Kbytes).

Un saludo,
  #14 (permalink)  
Antiguo 08/11/2005, 07:56
 
Fecha de Ingreso: octubre-2005
Mensajes: 69
Antigüedad: 19 años
Puntos: 0
Hola...

Bueno... el SO que estoy utilizando es windows xp, con el servidor IIS version 5, tiene los permisos completos (lectura, escritura) tanto en el archivo temporal que trae como defecto (C:\php\uploadtemp\) como el archivo donde voy a alojar la informacion (images/uploaded/)... he estado tratando con un archivo mas grande de 500kbytes pero sin embargo no se guarda en la direccion de destino... pude observar que el archivo se aloja en el C:\php\uploadtemp\....

En la variable destino se tiene:

Código PHP:
$destino "images/uploaded/".$_FILES['archivo']['name']; 
esta bien colocado??? con los / ???....el archivo upload1.php se encuentra en el mismo nivel que la carpetas imagenes... de todas maneras coloque la direccion absoluta y tampoco me funciona..

Código PHP:
c:/Inetpub/wwwroot/plusoffice/images/uploaded
una vez mas gracias
__________________
Ana Martins
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:16.