Foros del Web » Programando para Internet » PHP »

problemas con move_uploaded_file()

Estas en el tema de problemas con move_uploaded_file() en el foro de PHP en Foros del Web. tengo un scrip para suvir archivos y no se por ke no me andaaa estoy apunto del suisidio si no lo entrogo me echan aki ...
  #1 (permalink)  
Antiguo 18/05/2004, 08:17
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
problemas con move_uploaded_file()

tengo un scrip para suvir archivos y no se por ke no me andaaa estoy apunto del suisidio si no lo entrogo me echan
aki le dejo el scrip no se por ke no me anda por favor mientras antes me ayuden mejr graciassss

Archivo suvir.php
------------------------------0000000000-----------------------------------
<form action="subearchivo.php" method="post" enctype="multipart/form-data">
<b>Campo de tipo texto:</b>
<br>
<input type="text" name="cadenatexto" size="20" maxlength="100">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<br>
<br>
<b>Enviar un nuevo archivo: </b>
<br>
<input name="userfile" type="file">
<br>
<input type="submit" value="Enviar">
</form>
------------------------------0000000000-----------------------------------

Archivo subearchivo.php
-----------------------------00000000000----------------------------------
<?
//tomo el valor de un elemento de tipo texto del formulario
$cadenatexto = $_POST["cadenatexto"];
echo "Escribió en el campo de texto: " . $cadenatexto . "<br><br>";
//datos del arhivo
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
$file_name = $HTTP_POST_FILES['userfile'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 100000))) {
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>";
}else{
if (move_uploaded_file($file_name, $nombre_archivo)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}

?>
------------------------------------000000000---------------------------------


Adios
  #2 (permalink)  
Antiguo 18/05/2004, 08:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
vamos a ver ..

Empecemos por definir "no me anda" .. que es eso? .. que hace el script o no hace? .. algún error de PHP visible? .. algun mensaje de error de los que el própio script usa? ..

Que versión de PHP usas? .. bajo que sistema operativo (el del servidor) ? .. usas un servicio de hosting gratuito o de pago?

php.ini (phpinfo() se puede ver) .. que valor tiene?:
register_globals

En fin .. como veras .. si un código "aparentemente" es correcto (seguro que lo tomastes de algún sitio que dice que le funciona) .. Los problemas en PHP vienen por su alta configuración que es totalmente "personalizable" (para bien o para mal) así que si no se conoce esta es imposible ver por donde puede estar el problema.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 18/05/2004, 08:49
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
miraaa

mira toma http://www.globalset.com.ar/prueva/suvir.php esta alli suvido



salem
  #4 (permalink)  
Antiguo 18/05/2004, 08:51
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
A mi me paso lo mismo y la solución que tomé fue usar la función copy().

El move... te mueve desde el directorio temporal al que tu le indiques.

El copy() te lo copia desde el directorio temporal al que tu le indiques y cuando termina el script borra el que esta en el directorio temporal automáticamente para no dejar basura.

A mi me funciona perfecto.

Suerte.
  #5 (permalink)  
Antiguo 18/05/2004, 09:03
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 13 años, 8 meses
Puntos: 0
si tu le haces un echo:

Código PHP:
$tipo_archivo $HTTP_POST_FILES['userfile']['type']; 
echo 
"tipo: ".$tipo_archivo"<br><br>"
$tamano_archivo $HTTP_POST_FILES['userfile']['size']; 
echo 
"tamaño: ".$HTTP_POST_FILES['userfile']['size']. "<br><br>"
sale:

Código:
tipo: image/gif
tamaño: 1104
sin embargo con los jpeg no sale nada... ni el tamaño pasa de 0

Última edición por raulggm; 18/05/2004 a las 09:05
  #6 (permalink)  
Antiguo 18/05/2004, 09:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Mas bien el move_uploaded_file() es el que copia y ¿borra?del "temporal" done PHP sube sus archivos hasta que le das algún uso ...

También el move_uploaded_file() no tiene problemas en configuraciones "safe_mode" por que es la única función que permite mover archivos desde ese upload_tmp_dir (php.ini que indique ahí) a donde indiques. Mientras que copy() .. fopen() etc son funciones "genéricas" para copiar archivos con sus restricciones de permisos si salen fuera de su ambito (open_base_dir .. etc)

------------

Salem .. No todo el mundo puede probar scripts .. así que no te costaría nada responder las pregunta que por mi parte te hice para intentar ir descartando problemas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 18/05/2004, 09:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm raulggm

sería así .. pero para eso usa strpos() . no compara "literalmnte" el $tipo con "gif" ... por ejemplo.

El caso es que como no diga que tipo de "aviso" dá su aplicación o que error le dá PHP .. poco se puede hacer.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 18/05/2004, 09:07
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 13 años, 8 meses
Puntos: 0
sorry sorry... me di cuenta despues de escribirlo...
  #9 (permalink)  
Antiguo 18/05/2004, 09:16
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
:)

no se como mierda hacerlo ya prove con cocy ademas uso siempre archivos gif la cosa es subir archivos no me importa como, (AYUDDDDDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)


salem


PD: agregenme al msn [email protected]
  #10 (permalink)  
Antiguo 18/05/2004, 09:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Pon:
Código PHP:
error_reporting(E_ALL); 
al comienzo del script. Parece que tienes configurado PHP para que no muestre errores. Eso esta muy bien una vez que has acabado el desarrollo, pero mientras lo mejor es ver todos los mensajes de error.
Cita:
El move... te mueve desde el directorio temporal al que tu le indiques.

El copy() te lo copia desde el directorio temporal al que tu le indiques y cuando termina el script borra el que esta en el directorio temporal automáticamente para no dejar basura.
Es el propio PHP el que borra del directorio temporal los ficheros subidos, ejecutes o no copy() o move...().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 18/05/2004, 09:26
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
miren

ya le agrege todo los exchos decriviendo las variablas y sigue sin poder subir sigo usando el metodo move_uploaded_file()


miren aki http://www.globalset.com.ar/prueva/suvir.php
  #12 (permalink)  
Antiguo 18/05/2004, 09:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Ya, fijate lo que te muestra:

file_name = Array

Y eso es porque has hecho:
Código PHP:
$file_name $HTTP_POST_FILES['userfile']; 
Y $HTTP_POST_FILES['userfile'] es un array. Lo que tendrias que poner es:
Código PHP:
$file_name $HTTP_POST_FILES['userfile']['tmp_name']; 
Revisa el manual http://www.php.net/manual/en/features.file-upload.php

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 18/05/2004, 09:37
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 13 años, 8 meses
Puntos: 0
el problema lo puedes tener al copiar el fichero en el directorio que le indicas, que puedes no tener permisos... prueba esto en subearchivo.php:

Código PHP:
$cadenatexto $_POST["cadenatexto"]; 
$nombre_archivo $_FILES['userfile']['name']; 
$tipo_archivo $_FILES['userfile']['type']; 
$tamano_archivo $_FILES['userfile']['size']; 
$file_name $_FILES['userfile']; 

$dir $_SERVER['DOCUMENT_ROOT']."dirPrueba/";
mkdir($dir,0777);
$dir .= $_FILES['userfile']['name'];

if (!((
strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpg")) && ($tamano_archivo 100000))) 

    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>"
}
else

    if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $dir))
    {
        echo 
"El archivo ha sido cargado correctamente."
    }
    else
    { 
        echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse."
    } 

  #14 (permalink)  
Antiguo 18/05/2004, 09:49
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
:)

si cambio $file_name = $HTTP_POST_FILES['userfile']['tmp_name'];, como dice josemi me tira esto:

Warning: move_uploaded_file(1993.gif): failed to open stream: Permission denied in /home/globalse/public_html/prueva/subearchivo.php on line 18

Warning: move_uploaded_file(): Unable to move '/tmp/phpDQBwNr' to '1993.gif' in /home/globalse/public_html/prueva/subearchivo.php on line 18
Ocurrió algún error al subir el fichero. No pudo guardarse.


-----------------------------------------------------------------------
si pongo ewl codijo ke me da "raulggm" me aparese esto:

Warning: mkdir(/home/globalse/public_htmldirPrueba/): Permission denied in /home/globalse/public_html/prueva/subearchivo.php on line 9

Warning: move_uploaded_file(/home/globalse/public_htmldirPrueba/1993.gif): failed to open stream: No such file or directory in /home/globalse/public_html/prueva/subearchivo.php on line 18

Warning: move_uploaded_file(): Unable to move '/tmp/phpcwF6he' to '/home/globalse/public_htmldirPrueba/1993.gif' in /home/globalse/public_html/prueva/subearchivo.php on line 18
Ocurrió algún error al subir el fichero. No pudo guardarse.
  #15 (permalink)  
Antiguo 18/05/2004, 09:52
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 13 años, 8 meses
Puntos: 0
Warning: mkdir(/home/globalse/public_htmldirPrueba/):

te falta poner / al crear el directorio:

Código PHP:
$dir $_SERVER['DOCUMENT_ROOT']."/dirPrueba/";
mkdir($dir,0777);
$dir .= $_FILES['userfile']['name']; 
  #16 (permalink)  
Antiguo 18/05/2004, 09:57
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
Exclamación eee

no entendi :S
  #17 (permalink)  
Antiguo 18/05/2004, 10:11
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 13 años, 8 meses
Puntos: 0
mira el codigo que te puse primero...

Código PHP:
$dir $_SERVER['DOCUMENT_ROOT']."dirPrueba/";
mkdir($dir,0777);
$dir .= $_FILES['userfile']['name']; 
con ese codigo me dices que te da este error:

Código:
Warning: mkdir(/home/globalse/public_htmldirPrueba/): Permission denied in /home/globalse/public_html/prueva/subearchivo.php on line 9
y lo que te digo es que falta poner / al crear el directorio dirPrueba (busca la diferencia entre los dos codigos que te pongo)...

Código PHP:
$dir $_SERVER['DOCUMENT_ROOT']."/dirPrueba/";
mkdir($dir,0777);
$dir .= $_FILES['userfile']['name']; 
depende de como este configurado el servidor, SERVER['DOCUMENT_ROOT'], tendra o no / al final. A mi me lo devuelve con / y por lo que veo a ti no. Por eso, tendras que poner tu / al crear el directorio... me explico?
  #18 (permalink)  
Antiguo 18/05/2004, 10:38
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
no se

no seee no me funcaaaaaaaaaaaaa buaaaa mira ya le agrege lo ke me digistes cree la carpeta en si
y no funco



salem



PD: buaaaa
  #19 (permalink)  
Antiguo 18/05/2004, 10:43
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 13 años, 8 meses
Puntos: 0
y que error te da (si te da alguno)?
te crea la carpeta en el servidor pero no te copia el fichero en el?
  #20 (permalink)  
Antiguo 18/05/2004, 10:55
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
buuu

no anda sino entra http://www.globalset.com.ar/prueva/suvir.php
  #21 (permalink)  
Antiguo 18/05/2004, 11:13
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
hay alguien ke me pueda pasar un scrip de upload de archios ke funcione bien y me lo pase por favor asi lo puedo analisar
  #22 (permalink)  
Antiguo 18/05/2004, 16:23
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Tienes que darle CHMOD 777 a esa carpeta !!

CHMOD(acrónimo de CHange MODe) es un comando UNIX que permite cambiar los permisos de acceso de un archivo. Cada archivo tiene nueve clases de acceso, que pueden ser permitidas o denegadas. Se pueden aplicar diferentes permisos al dueño del fichero, al grupo al que el fichero pertenece y al resto de usuarios. Cada una de estas tres clases de usuarios (dueño, grupo, resto de usuarios) puede tener permisos de lectura, escritura y ejecución...

http://www.ignside.net/man/ftp/chmod.php
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #23 (permalink)  
Antiguo 16/06/2004, 04:00
Avatar de Ausiàs  
Fecha de Ingreso: mayo-2004
Ubicación: País Valenciano
Mensajes: 78
Antigüedad: 13 años, 6 meses
Puntos: 0
¡Cierto lo que dice Gerald!

Tuve el mismo problema que tú pero ya está resuelto. A ver si esto te puede ayudar:

http://www.forosdelweb.com/showthrea...045#post709045

Sólo comentar que has de tener unos pocos fundamentos de programación para entender lo que aquí hablamos.
__________________
La web de mi cortometraje:
http://www.perdiendoeljuicio.com
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 10:40.