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 disculpen que pregunte esto, he buscado en el foro acerca de upload imagemes y utilize uno de los codigos mencionados en este foro, pero ...
  #1 (permalink)  
Antiguo 18/04/2006, 13:08
Avatar de batusai240  
Fecha de Ingreso: octubre-2004
Mensajes: 29
Antigüedad: 19 años, 5 meses
Puntos: 0
Pregunta Problemas con upload

Hola disculpen que pregunte esto, he buscado en el foro acerca de upload imagemes y utilize uno de los codigos mencionados en este foro, pero al utilizarlo intento hacer el upload de la imagen, o preiono en el boton examinar y ingreso un texto luego envio, me sale que se realizo la operacion, pero cuando voy a ver la carpeta raiz ya que dicen que ahi se copian no encuentro nada, entonces intento volver a subir la imagen de nuevo y recien logra subirme la imagen, esto quiere decir que para que resulte el upload tengo que hacerlo dos veces a la misma imagen si no, No aparece nada de nada.?? por que sucede esto???aqui est el codigo:

Del formulario

<form action="subearchivo.php" method="post" enctype="multipart/form-data">
<br>
<table width="358" border="0">
<tr>
<td width="122">Nombre</td>
<td width="226"><input type="text" name="cadenatexto" size="20" maxlength="100" />
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<br /></td>
</tr>
<tr>
<td><b>Enviar Una i,magen: </b></td>
<td><input name="userfile" type="file" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="submit" type="submit" value="Enviar" /></td>
</tr>
</table>
<br>
</form>

del archibo php subearchivo.php

<?
//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'];
//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($HTTP_POST_FILES['./images/']['tmp_name'], $nombre_archivo)){

echo "El archivo ha sido cargado correctamente.";
header(sprintf("Location: %s", "/mery_happy/poemas.php"));
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
?>

Bueno tambien quisiera que el texto que ingreso puedo enlazarce con una base de datos ya que he puesto nombre o sea que la gente ingrese su nombre y puedo colgar una imagen y cuando revise la base de datos pueda saber quien colgo dicha imagen. Disculpen si pregunto un tema que han tratado muchas veces, por que he visto todossss los temas del foro, pero es que utilize el codigo dicho y no me funciona Gracias de antemano
  #2 (permalink)  
Antiguo 18/04/2006, 13:31
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo

Pues le hize unas pequeñas modificaciones y me funciono de maravilla PRUEBALO.
Trata de ser un poco mas ordenado con tu código tanto para tu beneficio como el de los que queremos ayudarte

Código PHP:
<?php
//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 $_FILES['userfile']['name']; 
$tipo_archivo $_FILES['userfile']['type']; 
$tamano_archivo $_FILES['userfile']['size'];
$ruta "./imagen/" ;
$ruta_del_archivo $ruta$_FILES['userfile']['name']; 

//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($_FILES['userfile']['tmp_name'],$ruta_del_archivo))
 { 

   echo 
"El archivo ha sido cargado correctamente."

 }
 else
 { 
    echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse."
 } 

?>
  #3 (permalink)  
Antiguo 18/04/2006, 14:00
Avatar de batusai240  
Fecha de Ingreso: octubre-2004
Mensajes: 29
Antigüedad: 19 años, 5 meses
Puntos: 0
ahora me aparece este problema

Hola utilize tu codigo pero ahora cuando le doy click en enviar me aparece esto y esto si que me raya que ha pasado??????????:S por que no puedo subir la imagen????????, he hecho lo que me aconsejaste, es mas ahora ni con el otro script me funciona aunque lo haga las veces que haga sol apare este escrito luego de dar click en enviar?? que significa esto??



Escribi・en el campo de texto:


Warning: move_uploaded_file(./imagen/imagen.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\AppServ\www\mery_happy\subir archivos\subearchivo.php on line 22

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\TEMP\php5B.tmp' to './imagen/imagen.jpg' in C:\AppServ\www\mery_happy\subir archivos\subearchivo.php on line 22
Ocurri・alg佖 error al subir el fichero. No pudo guardarse.
  #4 (permalink)  
Antiguo 18/04/2006, 14:06
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Crea un carpeta en el mismo "nivel" en donde se encuentre tu archivo php.
  #5 (permalink)  
Antiguo 18/04/2006, 14:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y que obtienes si haces:

Código PHP:
<?
echo "<pre>";
print_r($_FILES);
echo 
"</pre>";
Debes obtener las propiedades de tu archivo subido .. nombre, tipo, tamaño .. etc.

También verifica que tipo de archivo estás subiendo y su tamaño .. tu código tiene restricciones (MAX_FILE_SIZE" value="100000) y también las impone PHP (en su configuración php.ini) .. así que intenta primero probar con archivos "pequeños" (hablemos de unos cientos de KB) ...

Y OJO! que debe ser como te han comentado:
$_FILES['userfile']['tmp_name']

NO
$HTTP_POST_FILES['./images/']['tmp_name'],

(por el mensaje de error parece que estás probando tu ejemplo .. no el de mauled)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 18/04/2006, 14:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por mauled
Crea un carpeta en el mismo "nivel" en donde se encuentre tu archivo php.
Eso también .. y según el ejemplo .. de nombre:

$ruta = "./imagen/" ;

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/04/2006, 14:26
Avatar de batusai240  
Fecha de Ingreso: octubre-2004
Mensajes: 29
Antigüedad: 19 años, 5 meses
Puntos: 0
creo que meti la pata peor

antes de poder ver las repsuestas que me dieron estaba intentando ver como solucionar el error buscando en el foro sobre upload y encontre que en el archivo php.ini tenia que ver estas indicaciones:


;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =C:\AppServ\php\
;C:\AppServ\php\

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

entonces lo que huice fue modificarlo a esto:

;upload_tmp_dir =C:\AppServ\www\mery_happy\subiendo_archivos\image s
;C:\AppServ\www\mery_happy\subiendo_archivos\image s
y copie el archivo a el disco c, segund decia el ejemplo del foro. el punto es que no me corre nada.
y para solucionar el problema reinstale el appserv y ahora ni el apache ,me corre. HAaaaaa estoy entrnado en crisis, voy a desistalar el appserv y voy a reisntalarlo, ya vuelvo para decirles que paso, por favor sigan ayudandome que toy en un hoyo muy grande.. :(
  #8 (permalink)  
Antiguo 18/04/2006, 14:48
Avatar de batusai240  
Fecha de Ingreso: octubre-2004
Mensajes: 29
Antigüedad: 19 años, 5 meses
Puntos: 0
Gracias muchachos uan vez mas

Muchas gracias chicos en serio son lo maximo, mi error era el siguiente en el escript aparecia la carpeta imagen, esa imagen no eistia ya que dentro de mi directorio subirarchivos en donde se encontraba mi archivo php no habia ninguna carpeta imagen ahora que ya cree esta carpeta imagen el codigo me va de maravilla gracias Mauled, gracias cluster, en seiro son lo maximooo :D

nos vemos
  #9 (permalink)  
Antiguo 18/04/2006, 15:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te comento que PHP sube todo archivo que pasa por el. Cuando usas un "uplad HTTP" a un directorio temporal que se configura o se indica en la directiva que has tocado: upload_tmp_dir .. ahí se queda y con un nombre "temporal" hasta que una función tipo: move_uploaded_file() lo "mueve" a su destino definitivo. Así es como funciona y como veras no se trata de apuntar esa directiva de tu PHP.ini a donde tu aplicación requiere ese archivo que quede ..

Por otro lado en un php.ini .. los ";" deshabilitan la línea que esté .. por ende si tu quieres definir un valor X a una directiva .. como la que presentas sería:

upload_tmp_dir = "c:\instalacion de PHP\php\uploads\"

Usa las "comillas" si tus rutas tienen espacios ... Y por supuesto que ese directorio que indicas ahí exista y si corresponde que tenga permisos de escritura suficientes.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 18/04/2006, 15:28
Avatar de batusai240  
Fecha de Ingreso: octubre-2004
Mensajes: 29
Antigüedad: 19 años, 5 meses
Puntos: 0
y como subo archivos mas grandes

Hola muchas gracias con la explicacion la verdad es que no soy un experto en php( eso se nota a leguas no?) pero estoy aprendiedno y cada consejo quye recibo cada explicacion que das, agradesco por que asi aprendo y puedo ayudar a mas personas.
disculpa pero ahora ya me sube archivos pero no son mayores de 100KB discupa pero necesito subir imagenes mas grandes como de 1Mb o quizas de 2Mb como puedo hacer????????? por favor si pudieras ayudar te lo agradeceria . 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 20:01.