Foros del Web » Programando para Internet » PHP »

Problemas con Upload

Estas en el tema de Problemas con Upload en el foro de PHP en Foros del Web. Hola a [email protected]! Tengo un problema con upload de archivos. He probado varios scripts que he encontrado aquí, en otros mensajes, uno de hotscripts y ...
  #1 (permalink)  
Antiguo 18/11/2002, 06:18
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Problemas con Upload

Hola a [email protected]!

Tengo un problema con upload de archivos. He probado varios scripts que he encontrado aquí, en otros mensajes, uno de hotscripts y de algún que otro manual, pero no hay manera. No consigo subir nada. Estoy desesperada, seguro que es un error tonto, pero lo logro dar con él.

Bien voy a especificar un poco más.

Tengo un formulario donde se pueden escoger los archivos a subir y que tiene el action al archivo "subir_archivos.php"

este archivo tiene el siguiente código:

<?php
$con_ftp = ftp_connect("66.111.222.333");
ftp_login ($con_ftp, "login", "pwd");

$dir_afil = "AFIL_" . intval($afil);
$dir_inm = "INM_" . intval($ID_INM);

$ruta = $dir_afil ."/" . $dir_inm . "/fotografias";

ftp_chdir ($con_ftp, $ruta);

for ($i=1; $i<=5; $i++) {
$fichero = "FOTO_$i";
echo $fichero;
if ($fichero != "") {
if (ftp_put($con_ftp, $fichero, $fichero, FTP_ASCII)){
echo " -- OK<br>";
}
else {
echo "<br>";
}
}

}
?>


Pues bien, cuando lo ejecuto me sale el error:
Warning: error opening FOTO_1 in "la linea donde hago el ftp_put"

Puede ser que mi error esté en la ruta que pongo? Quiero decir que este archivo lo tengo en una carpeta y quiero subir los archivos a otra que está varios niveles por encima.

Gracias por anticipado

Salu2
Mònica J.M.
  #2 (permalink)  
Antiguo 18/11/2002, 06:25
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Hola de nuevo,

quería poner otro código que también he probado y tampoco funciona, a ver si con este estoy más cerca de la solución:

<?php

$dir_afil = "AFIL_" . intval($afil);
$dir_inm = "INM_" . intval($ID_INM);

$ruta = $dir_afil ."/" . $dir_inm . "/fotografias";

for ($i=1; $i<=5; $i++) {
$fichero = "FOTO_$i";
echo $fichero;
if ($fichero != "") {
if (copy($fichero, $ruta.$fichero_name)) {
echo " -- OK<br>";
}
else {
echo "<br>";
}
}

}
?>

En este caso el error es:
Warning: Unable to open 'FOTO_1' for reading: No such file or directory in "la linea del copy()".

Si le pongo una arroba delante del copy, es decir escribo la siguiente línea:
@copy($fichero, $ruta.$fichero_name);
No me da el error, pero sigue sin subirme el fichero.

Llevo 3 días haciendo pruebas y buscando soluciones y no logro arreglarlo, si alguien es tan amable de echarme una mano, se lo agradecería mucho.

Gracias.

Salu2
Mònica J. M.
  #3 (permalink)  
Antiguo 18/11/2002, 13:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y tu servidor .. com trabaja el tema de las variables globales.

php.ini -> directiva register_globals = ON u OFF ?

Conoces el array superglobal? en concreto del tema $_FILE ?

Si tu servidor trabaja con register_globals a OFF . los $files .. no seran accesibles por esa variable . .solo seran accesibles por $_FILE[] .. o $HTTP_POST_FILES[] ...

http://www.php.net/manual/en/feature...ad.post-method

Un saludo,
  #4 (permalink)  
Antiguo 18/11/2002, 18:48
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Hola Cluster,

Gracias por tu orientación, pero no sé como acceder al archivo php.ini, creo que el Administrador del Servidor no me deja, pero supongo que lo tengo en ON, por que en otra aplicación que tengo en el mismo site, consigo subir, abrir y leer un archivo, aunque no se me guarda en ninguna carpeta.

Estoy desesperada ya no sé qué hacer. De todas formas me he puesto en contacto con el Administrador para que me mire eso de la directiva register_globals.

Gracias.

Salu2
Mònica J. M.
  #5 (permalink)  
Antiguo 18/11/2002, 19:17
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 16 años, 4 meses
Puntos: 0
yo tuve el mismo problema y si, necesitaron configurar el servidor no solo en las globales, sino con acceso al directorio \tmp que es donde entran los archivos con mi codigo - solamente mientras corre el codigo - para despues copiarlos a mis archivos y cambiarles el nombre.

No se si me explique, va de nuevo: con mi código subo un archivo y este se guarda automaticamente en el archivo \tmp del directorio de php del servidor, solamente mientras corres el codigo, porque despues el mismo servidor lo borra, cuando termina el código, a este archivo le da un nombre temporal, asi que con codigo lo copio a mi directorio del sitio y le cambio el nombre, aqui esta el codigo, espero que te sirva:


Esta es la forma:


<form action="<?php echo$PHP_SELF ?>" method="post" enctype="multipart/form-data" name="ubicaform2" id="ubicaform2">

<input name="addubica" type="submit" id="addubica" value="subir imagen">

Imagen: <input name="upimagen" type="file" id="upimagen">

</form>




Si te das cuenta, envio la forma a la misma pagina PHP pero esto lo puedes cambiar, lo que si debes tomar mucho en cuenta, al menos para imágenes es el enctype="multipart/form-data"



Luego, al principio de mi pagina (o en la pagina a donde es dirigida la forma) pones esto:



if (isset ($addubica)) {
//print "$upimagen = upimagen ";
//print "$upimagen_name = upimagen_name ";
//print "$upimagen_type = upimagen_type ";
//print "$upimagen_size = upimagen_size ";

$newimage = sprintf ("imagenes/%s", $upimagen_name);
move_uploaded_file($upimagen, $newimage);

mysql_select_db($database_travconn, $travconn);
$sql = "INSERT INTO ubicacion (imagen) VALUES ('$newimage')";
$result = mysql_query($sql);
}



Asi entra el registro en la base de datos haciendo referencia a la imagen que quedó en mi subdirectorio imagenes.

Las lineas que estan como comentario solo estan para confirmar el nombre de la imagen original, el nombre que queda, el tipo y el tamaño de la imagen, si quieres que aparezca quita las diagonales.

Por último en la página donde quieras que se abra el archivo solo lo llamas con el nombre que le diste, en mi caso sería:

<img src="<?php echo $row_Ubicacion['imagen']; ?>">

que me da como resultado "imagen/nombre.jpg"

aunque el archivo de la imagen ya esta fisicamente en el subdirectorio "imagen" con la base de datos solo asigno el source.
  #6 (permalink)  
Antiguo 18/11/2002, 19:42
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Gracias GhostRider por tu colaboración,

He probado tu código y sigue dándome error, exactamente pone:
Warning: Unable to create 'imagenes/boton.gif': No such file or directory
e indica la linia de código siguiente:
move_uploaded_file($upimagen, $newimage);

Alguna idea de dónde puede estar el problema?

Gracias

Salu2
Mònica J. M.
  #7 (permalink)  
Antiguo 18/11/2002, 20:07
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 16 años, 4 meses
Puntos: 0
quita los comentarios en la linea

print "$upimagen = upimagen ";

y en la pagina resultante te tiene que aparecer algo como


x35mt.tmp = upimagen (el nombre del archivo es aleatorio, pero se ve asi de raro)

si es asi, quiere decir que si se esta subiendo la imagen temporal pero no puedes copiarla a tu directorio y renombrarla, checa con el administrador los permisos para acceder al archivo \tmp y copiar archivos desde ahi.
  #8 (permalink)  
Antiguo 19/11/2002, 05:27
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Pues sí, tenéis razón.

Lo probé y si que me daba el nombre temporal.
Ya me he puesto en contacto con el Administrador.

Muchas gracias.

Salu2
Mònica J.M.
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 04:54.