Foros del Web » Programando para Internet » PHP »

Upload de archivos, porque no funciona?!

Estas en el tema de Upload de archivos, porque no funciona?! en el foro de PHP en Foros del Web. Código PHP: <? if (isset( $_POST [ 'subir' ])){      if ( file_exists ( $archivo ) ||  file_exists ( $img )){              if ( $HTTP_POST_FILES [ archivo ][ size ] <=  $MAX_FILE_SIZE ...
  #1 (permalink)  
Antiguo 10/05/2005, 21:46
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
Upload de archivos, porque no funciona?!

Código PHP:
<?
if (isset($_POST['subir'])){
     if (
file_exists($archivo) || file_exists($img)){
             if (
$HTTP_POST_FILES[archivo][size] <= $MAX_FILE_SIZE){
                  if (
$carpeta == "download"){
                 
$ext="application/mac-binhex40";
                 }else{
                 
$ext="application/x-shockwave-flash";
                 };
                        if (!
$nombre || !$descripcion || !$archivo || !$img){
                        
$msg="<font color=\"red\"><b>Te falto algo!!!!!!!!!!<b></font>";
                        }else{
                                    if (
$HTTP_POST_FILES[archivo][type] == $ext){
                                    
move_uploaded_file($HTTP_POST_FILES[archivo][tmp_name],'../'.$carpeta.'/'.$HTTP_POST_FILES[archivo][name]);
                                    
move_uploaded_file($HTTP_POST_FILES[img][tmp_name],'../'.$carpeta.'/img'.'/'.$HTTP_POST_FILES[img][name]);
                                         if ( (
is_uploaded_file($HTTP_POST_FILES[archivo])) && (is_uploaded_file($HTTP_POST_FILES[img])) ) {
                                         
/////////////Guardar en la DB///////////////
                                         
$conex=mysql_connect("localhost","dvd","pass");
                     
mysql_select_db(db,$conex); 
                     
$direccion=$carpeta.'/img/'.$HTTP_POST_FILES[img][name];
                     
$dirfile=$carpeta.'/'.$HTTP_POST_FILES[archivo][name];
                     
$datos="INSERT INTO $carpeta (dir, nombre, descripcion, img) VALUES ('$dirfile', '$nombre', '$descripcion', '$direccion')";
                     
mysql_query ($datos);
                     
mysql_close();
                                         
$msg="<font color=\"red\"><b>El archivo se subio con exito!!!</b></font>";
                                         }else{
                                         
$msg="A ocurrido un error desconocido";
                                         };
                                 }else{
                         
$msg="El archivo debe ser".$ext;
                           };
                         };
        }else{
      
$msg="<font color=\"red\"><b>El archivo es muy grande!!!!</b></font>";
      };
    }else{
    
$msg="<font color=\"red\"><b>Ya hay un archivo con el mismo nombre";    
  };
}else{
?>
<HTML>
<HEAD>
<TITLE>Subir archivos</TITLE>
<LINK href="../css.css" rel="stylesheet" type="text/css">
</HEAD>
<BODY>
<CENTER>
<FONT>Subir <?="$carpeta";?>
<BR>
<B><STRONG>La imagen que subiras sera usada como de ejemplo, debe ser gif, y debe ser menor de 200kb, las dimensiones deben ser 75x100 px(no importan las dimensiones, pero debe ser proporcional, sino saldría deformada la imagen).
Las <?="$carpeta";?> no deben exceder los 2MB. Los screensavers deben estar comprimidos (.zip).
<BR>
La descripcion aparecera en la pagina como... es obvio ¿no?
<br>
 El nombre debe ser el mismo que el de el archivo.
</STRONG></B>
</font>
<br>
<br>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2000">
<br>
<font>Nombre del archivo</font><input type="text" name="nombre" class="input">
<br>
<font>Descripcion </font><textarea cols="30" rows="10" name="descripcion"></textarea>
<br>
<font><? echo "$carpeta"?> a subir: </font><input name="archivo" type="file" class="input">
<br>
<font>Imagen </font><input type="file" name="img" class="input">
<br>
<input type="submit" value="subir" class="boton">
</form>
<br>
<?echo"$msg";?>
</center>
</body>
</html>
<?}; ?>
Aqui esta el codigo.
Porque no funciona????????

Saludos
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #2 (permalink)  
Antiguo 10/05/2005, 23:35
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Dinos tú!... ¿presenta algún error/mensaje en pantalla??... ¿Cuál es el problema??.. ¿por qué no funciona??...

A simple vista veo una condición: if (file_exists($archivo) || file_exists($img)){ y no veo que antes le asignes valor a $archivo ó a $img.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 12/05/2005, 01:29
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
Pues no aparece ningun error, o no lo e visto (el color de fondo es negro) y las variables, se les asigna un valor en el formulario de al final. ($carpeta es una variable que recibo de otro formulario)
Código:
<font><? echo "$carpeta"; ?> a subir: </font><input name="archivo" type="file" class="input">
<br>
<font>Imagen </font><input type="file" name="img" class="input">
<br>
El problema es que no sube los archivos.
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #4 (permalink)  
Antiguo 12/05/2005, 01:43
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 12 años, 7 meses
Puntos: 0
es posible que te este dando un error de parseo, veo que al final del codigo php (justo antes del body) tienes un else que abre una llave y no tiene su correspondiente cierre. quizas eso te de una pista.
espero ayudar...
un saludo
  #5 (permalink)  
Antiguo 12/05/2005, 02:52
 
Fecha de Ingreso: mayo-2005
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
Información

Un error bastante común... qué permisos tiene la carpeta donde quieres escribir?
  #6 (permalink)  
Antiguo 12/05/2005, 03:11
Avatar de illman  
Fecha de Ingreso: mayo-2001
Mensajes: 115
Antigüedad: 16 años, 7 meses
Puntos: 0
Estoy de acuerdo con electronpositiv, prueba de aplicar chmod($archivo,444) o chmod ($img,444)
  #7 (permalink)  
Antiguo 12/05/2005, 10:17
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 13 años, 9 meses
Puntos: 0
Notice: Undefined variable: carpeta in c:\archivos de programa\easyphp1-8\www\prueba\upload.php on line 48


ese es el error que da

si me ayudan por fa
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #8 (permalink)  
Antiguo 12/05/2005, 11:18
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Bueno te ayudare, pero te hare varias preguntas y me las respondes en fila:
1- Necesito que escribas aqui el codigo completo del form que usas para enviar las imagenes al archivo que las sube, solo la linea <form action="" method="", solo esa linea.
2- Quiero saber si conoces la variable super global $_FILES??
3- No te importa si el metodo que usas lo cambie, ya que puedo ayudarte pero te entregare otro codigo muy distinto ya que no uso $_HTTP_POST_FILE, eso es un detalle mio.
  #9 (permalink)  
Antiguo 12/05/2005, 11:48
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
1- El codigo completo del form viene en el codigo que puse :<form action="upload.php" method="post" enctype="multipart/form-data"> Upload.php es el mismo archivo.

2-si la conosco, la usaba en este script, pero eso fue hace como 5 meses , al ver que no funcionaba, lo cambie por $HTTP_POST_FILES y no me funciono, lo puse en otro foro pero nadie me respondio :(, y este script quedo perdido en mi compu y cuando vi este excelente foro decidi ponerlo.

3- Nop, no me importa.

Creo que puede ser lo que dice electronpositiv
------>>>>"Un error bastante común... qué permisos tiene la carpeta donde quieres escribir?"<<<<<<-----

Saludos y gracias por su interes
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #10 (permalink)  
Antiguo 13/05/2005, 04:37
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por maralbust
Notice: Undefined variable: carpeta in c:\archivos de programa\easyphp1-8\www\prueba\upload.php on line 48

ese es el error que da
Pués ese error te dice que no está definida la variable $carpeta... aúnque no entendí si el error es de tu sistema ó al tratar de emplera el chmod() ¿?

Como sea, asegurate de recivir correctamente dicha variable... imprimela para verlo (quizá debas precindir tantito de tu fondo negro ).

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 13/05/2005, 12:05
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
Creo que el problema son los permisos para escribir que tiene la carpeta .

La variable $carpeta la recibo de otro formulario es por eso que no sale, porque no lo puse en el post .

Y ya cheque y no me sale ningun error (bueno, si me sale uno, pero es porque me equivoque en <input type="hidden" name="MAX_FILE_SIZE" value="2000">, subo archivos mayores a 2kb y ya lo cambie a 2000000(2mb) pero sigue igual y no me sube los archivos .)

Como dije, creo que son los permisos que tiene la carpeta, voy a revisar
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #12 (permalink)  
Antiguo 13/05/2005, 12:18
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 13 años, 9 meses
Puntos: 0
en ese caso para probar dale permiso 777

lo puedes hacer con cualquier ftp manager

salu2
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #13 (permalink)  
Antiguo 14/05/2005, 10:44
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
Tengo entendido que si la carpeta a la que le quieres dar permisos fue creada usando php debes darle el permiso tambien con php, y si creaste la carpeta desde un ftp debes de darle los permisos con un programa ftp y no con php.

Estoy bien o me equivoco????
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #14 (permalink)  
Antiguo 16/05/2005, 09:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por DvD AdN
Tengo entendido que si la carpeta a la que le quieres dar permisos fue creada usando php debes darle el permiso tambien con php, y si creaste la carpeta desde un ftp debes de darle los permisos con un programa ftp y no con php.

Estoy bien o me equivoco????
Bueno .. para eso tienes el sistema de "grupos" para otorgar permisos .. Es dicer, si sabes que cuando creas un directorio por FTP se usó el usuario "X" y cuando lo haces por PHP es el usuario "Y" .. si quieres que ambos escrian en ella tendrás que asignar permisos de escritura "para todo usuario" o "para el grupo" (si es que X e Y están en el mismo grupo) .. Un permiso "0777" sería total (lectura, escritura y ejecución para todo usuario) .. podría ser menor (0677) o menos todavía .. el caso es que al menos se pueda escribir "por todo usuario" dicho directorio.

Un saludo,
  #15 (permalink)  
Antiguo 20/05/2005, 07:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Sobre configuración de PHP+Apache que puede afectar al tema de Upload de archivos:
http://www.forosdelweb.com/showpost....&postcount=146

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 11:38.