Foros del Web » Programando para Internet » PHP »

Ayuda con upload de archivos

Estas en el tema de Ayuda con upload de archivos en el foro de PHP en Foros del Web. Hola a todos quisiera que me ayudaran a resolver este problema que tengo. El problema es que tengo un codigo para hacer upload de archivos ...
  #1 (permalink)  
Antiguo 12/11/2005, 01:57
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 20 años, 5 meses
Puntos: 0
Exclamación Ayuda con upload de archivos

Hola a todos quisiera que me ayudaran a resolver este problema que tengo.

El problema es que tengo un codigo para hacer upload de archivos pero no me funciona y no me manda ningun error de php.

Aqui les pongo el codigo
Código PHP:
<? 
//tomo el valor de un elemento de tipo texto del formulario 
$cadenatexto $_POST["cadenatexto"]; 
$path="archivos";
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") || strpos($tipo_archivo,"jpg")) && ($tamano_archivo 100000000))) { 
    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['userfile']['tmp_name'], $path)){ 
       echo 
"El archivo ha sido cargado correctamente."
    }else{ 
       echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse."
    } 

?>
Lo que quiero es que el archivo que se sube al servidor llegue a una carpeta determinada.

Espero que me puedan ayudar
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #2 (permalink)  
Antiguo 12/11/2005, 03:12
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
A ver tres cosas:

primero prueba a cambiar los
Código PHP:
$HTTP_POST_FILES 
por
Código PHP:
$_FILES 
en segundo lugar cambia
Código PHP:
$path="archivos"
por
Código PHP:
$path="archivos/"
y por ultimo cambia el
Código PHP:
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $path)){ 
por
Código PHP:
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $path.$_FILES['userfile']['name'];)){ 
Y con esto ya esta, deberia subir sin problemas.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches

Última edición por jam1138; 13/11/2005 a las 00:10
  #3 (permalink)  
Antiguo 13/11/2005, 00:06
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 20 años, 5 meses
Puntos: 0
Bueno ya mas o menos funciona, pero hay un problema, quiero hacer con este una galeria, pero el problema es que solo admite la extension gif y no se porque, espero que me puedan ayudar
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #4 (permalink)  
Antiguo 13/11/2005, 03:14
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 18 años, 11 meses
Puntos: 0
Código PHP:
if (! ( strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg") || strpos($tipo_archivo,"jpg") ) && ($tamano_archivo 100000000) ) {

Intenta así.

Saludos y Suerte
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #5 (permalink)  
Antiguo 16/11/2005, 14:26
Avatar de ryu_on_ice  
Fecha de Ingreso: abril-2005
Mensajes: 315
Antigüedad: 19 años
Puntos: 0
hola a todos!!

He estado probando este srcript de Ixtleco, ya con las sugerencias de Bytevamp y DvD AdN, pero no logro hacer que suba nada, ni una imagen......ya no me marca errores ni nada, parece que todo esta bien......pero se keda en la parte que dice "La extensión o el tamaño de los archivos no es correcta....etc etc" de ahi no paso....

Ademas a mi me gustaria poder subir archivos un poco mas grandes (2 a 5mb) no se si sea posible, y no solamente imagenes, si no tambien archivos *.doc y/o *.zip ..todas esas modificaciones ya las hice.......mas no se si esten bien.

alguien me podria decir en que me esta fallando.....

saludos!!

Última edición por ryu_on_ice; 16/11/2005 a las 18:25
  #6 (permalink)  
Antiguo 16/11/2005, 18:34
Avatar de ryu_on_ice  
Fecha de Ingreso: abril-2005
Mensajes: 315
Antigüedad: 19 años
Puntos: 0
este es el codigo...

Código PHP:
<? 
//tomo el valor de un elemento de tipo texto del formulario 
$cadenatexto $_POST["cadenatexto"]; 
$path="archivos"
echo 
"Escribió en el campo de texto: " $cadenatexto "<br><br>"

//datos del archivo 
$nombre_archivo $_FILES['userfile']['name']; 
$tipo_archivo $_FILES['userfile']['type']; 
$tamano_archivo $_FILES['userfile']['size']; 

//compruebo si las características del archivo son las que deseo 
if (!((strpos($tipo_archivo"doc") || strpos($tipo_archivo"zip") || strpos($tipo_archivo,"jpg")) && ($tamano_archivo 2000000000))) { 
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos *.doc, *.zip o *.jpg<br><li>se permiten archivos de ?? máximo.</td></tr></table><br>"
    echo 
"<a href='forma-upload.php'>Click aquí</a> para corregir los campos."
}else{ 
   if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $path.$_FILES['userfile']['name'])){ 


       echo 
"El archivo ha sido cargado correctamente."
    }else{ 
       echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse."
    } 

?>
como les comentaba....se queda en el If que dice " La extensión o el tamaño de los archivos no es correcta...etc etc"....

tal ves las modificaciones no esten bien...

ojala me puedan ayudar!!!

saludos!!
  #7 (permalink)  
Antiguo 16/11/2005, 22:02
 
Fecha de Ingreso: noviembre-2005
Mensajes: 5
Antigüedad: 18 años, 5 meses
Puntos: 0
Sonrisa ayuda con la ruta de destino

Amigos gracias por su codigo, gracias a el pude realizar el mio...pero tenia un problema de la ruta de destino del archivo...
yo en mi caso tengo la siguiente estructura \\www\archivos

para guardar los archivos dentro de esa carpeta solo cambia el
$path = "\\www\archivos/";

y listo los archivos se guardaran dentro de la carpeta archivos
escribo esto por la ayuda q recibi por uds.

chau
  #8 (permalink)  
Antiguo 16/11/2005, 22:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Ademas a mi me gustaria poder subir archivos un poco mas grandes (2 a 5mb) no se si sea posible
Depende de la configuración de tu host. Haz un phpinfo() y busca el valor de upload_max_filesize.

Cita:
no solamente imagenes, si no tambien archivos *.doc y/o *.zip
La verdad es que yo no recomiendo la forma que sugiere DvD_AdN, es solo complicarse (no he visto que funcione) además que, en todo caso, creo sería mejor usar strstr() que strpos() ... como sea, yo sugiero una comparación directa: se usa menos código, queda más claro, no empleas funciones de más (gasto de recursos), etc.

Te sugiero leas las FAQ (para no variar), considero esta bien explicado: http://www.forosdelweb.com/showthrea...389#post249389

Pon atención al segundo código donde se explica presizamente cómo limitar el tipo de archivos a ser subidos (con una comparación directa) y contiene un enlace a los MIME TYPE correspondientes a dichos archivos (buscarás los .doc y/o .zip).

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

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 17/11/2005, 02:55
Avatar de ryu_on_ice  
Fecha de Ingreso: abril-2005
Mensajes: 315
Antigüedad: 19 años
Puntos: 0
Ayuda con upload de archivos

jam1138 ya habia visto este script que me recomiendas, pero por obras del destino sabra Dios por que no le puse atencion, y ya que analizandolo mas a detalle, esta un poco mas sencillo de entender...

ok y retomando el que recomiendan, unicamente me sale un error, y la verdad no se a que se deba....

Warning: Wrong parameter count for move_uploaded_file() in line 10


y aun marcando el anterior error, me despliega lo siguiente como si hubiera hecho el upload de manera correcta...

Upload exitoso!
Datos:
Nombre: temass.zip
Tipo MIME: application/x-zip-compressed
Peso: 1840 bytes

y este es el codigo.....
Código PHP:
<?php 

 $ruta
"download/".$_FILES['fichero']['name']; //ruta de la carpeta destino
if (isset($_POST['submit'])) {
 
    if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo 
 
        
If($_FILES['fichero']['type']=="application/msword" || "application/zip") { //
        
        
move_uploaded_file($_FILES['fichero']['tmp_name'], $_FILES['fichero']['size'] > 9765625$_FILES['fichero']['name'],$ruta); //linea 10<---supuestamente por aqui esta la falla
        
        
echo "<b>Upload exitoso!. Datos:</b><br>"
        echo 
"Nombre: <i><a href=\"".$_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>"
        echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>"
        echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>"
        echo 
"<br><hr><br>"
        } 
        else echo 
"<b> Archivo no valido</b>"

    } 
//fin if is_uploaded_file
//fin if principal
?> 
<!-- el formulario  -->
<form action="<?php echo $_SERVER['PHP_SELF'?>" method="post" enctype="multipart/form-data"> 
    Archivo: <input name="fichero" type="file"> 
    <input name="submit" type="submit" value="Upload!"> 
</form>

ojala alguien me pueda oriantar con esto!!!
saludos y gracias!!
  #10 (permalink)  
Antiguo 17/11/2005, 03:16
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Warning: Wrong parameter count for move_uploaded_file() in line 10
Eso, el parámetro que le estás pasando a la función es incorrecto.
Código PHP:
move_uploaded_file($_FILES['fichero']['tmp_name'], $_FILES['fichero']['size'] > 9765625$_FILES['fichero']['name'],$ruta); //linea 10<---supuestamente por aqui esta la falla 
, no "supuestamente", ahí esta la falla... ¿concionales ahí?? . Dicha función solo se encarga de colocar el fichero en su posición final y solo debe recibir 2 parámetros:
Código PHP:
move_uploaded_file("ruta_origen""ruta_destino"); 
.. pones al incio:
Código PHP:
 $ruta"download/".$_FILES['fichero']['name']; //ruta de la carpeta destino 
ahí estás intentando obtener un dato que podría no existir... primero debes comprobar que el fichero haya subido correctamente, osease que ese dato debe estar después del is_uploaded_file().

Organizate mejor . Plante bien qué condiciones son necesarias y en qué momento. Suerte!

PD: Dale una segunda leida a la FAQ... realmente veo por qué pudiste confundirte poniendo condicionales en la función ...
PD2: www.php.net/if ... básico.
__________________
٩(͡๏̯͡๏)۶
» 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 17/11/2005, 15:08
Avatar de ryu_on_ice  
Fecha de Ingreso: abril-2005
Mensajes: 315
Antigüedad: 19 años
Puntos: 0
Ayuda con upload de archivos

Hola....

hice las correcciones, sugeridas..(mil disculpas por las novatadas)

ahora me salen estos dos errores.....

Warning: move_uploaded_file(download/temass.zip): failed to open stream: Permission denied in /home/httpd/vhosts/midominio.com/httpdocs/upload4.php on line 8

Warning: move_uploaded_file(): Unable to move '/tmp/phpy79AWy' to 'download/temass.zip' in /home/httpd/vhosts/midominio.com.com/httpdocs/upload4.php on line 8


estos dos errores son cosa del hosting, eso de los permisos para escribir en tal carpeta....???

y este es el codigo........ trate de ser un poco mas organizado en el aspecto del orden de la ejecucion de cada condicion....pero me salieron estos errores
Código PHP:
<?php 
if (isset($_POST['submit'])) {

    if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo 
          
$ruta"download/".$_FILES['fichero']['name']; //ruta de la carpeta destino
            
If($_FILES['fichero']['type']=="application/msword" || "application/zip") { // condicion la carga del archivo, segun del tipo que sea etc etc
            
                
move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta); //linea <--- 8
                
                
echo "<b>Upload exitoso!. Datos:</b><br>"
                echo 
"Nombre: <i><a href=\"".$_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>"
                echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>"
                echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>"
                echo 
"<br><hr><br>"
            }
//fin de if  condicion la carga de archivos... 
        
else echo "<b> Archivo no valido</b>"

    } 
//fin if is_uploaded_file
//fin if principal
?> 
<!-- el formulario  -->
<form action="<?php echo $_SERVER['PHP_SELF'?>" method="post" enctype="multipart/form-data"> 
    Archivo: <input name="fichero" type="file"> 
    <input name="submit" type="submit" value="Upload!"> 
</form>

saludos...
y mil gracias por la atencion!!
  #12 (permalink)  
Antiguo 17/11/2005, 16:49
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
Pues creo que si,
Cita:
Warning: move_uploaded_file(download/temass.zip): failed to open stream: Permission denied in /home/httpd/vhosts/midominio.com/httpdocs/upload4.php on line 8
lo que te indica es que te nego, en este caso subir el archivo y
Cita:
Warning: move_uploaded_file(): Unable to move '/tmp/phpy79AWy' to 'download/temass.zip' in /home/httpd/vhosts/midominio.com.com/httpdocs/upload4.php on line 8
si no me equivoco es 3/4 de lo mismo.
Aunque este segundo no estoy del todo seguro, del primero si, me paso una vez y era por que el servidor no permitia subir de esta forma, sino que habia que usar cliente FTP.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #13 (permalink)  
Antiguo 17/11/2005, 19:07
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Un dedo arriba a tú código ...

Asegurate de tener permisos de escritura en la carpeta download y que esta exista dentro de la carpeta donde se ejecuta tu archivo...

¿Dónde estás haciendo estas pruebas?; en local, un hosting gratuito, de pago... bajo LINUX? .

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

"100 años después, la revolución no es con armas, es intelectual y digital"
  #14 (permalink)  
Antiguo 18/11/2005, 18:11
Avatar de ryu_on_ice  
Fecha de Ingreso: abril-2005
Mensajes: 315
Antigüedad: 19 años
Puntos: 0
Ayuda con upload de archivos

jam1138 ya funciono......solo faltaba lo de los permisos de escritura en la carpeta!!!


y para acomodar lo del limite de tamaño de archivos (por ejem de 5MB)....tonses el ejemplo que viene en la FAQ que me pasaste, seria diferente?

y es un server de paga...

saludos!
  #15 (permalink)  
Antiguo 19/11/2005, 10:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
jam1138 ya funciono......
Felicidades! .

Cita:
y para acomodar lo del limite de tamaño de archivos (por ejem de 5MB)....tonses el ejemplo que viene en la FAQ que me pasaste, seria diferente?
Límites vaz a encontrarlos de varias partes:
- El propio servidor puede establecer su límite
- Configuración del propio PHP en el archivo php.ini
- Tu propio script
- Desde el navegador...

Pués dichos límites tienen jerarquía según los menciono. Tu puedes controlar los límites en el navegador (habrás visto ponen un campo oculto, no necesario) y en tu script (como en la FAQ) pero tus límites no pueden sobrepasar a los establecidos en la configuración de PHP.

Crea un archivo donde solo contenga lo siguiente:
Código PHP:
<?php
phpinfo
(); 
?>
y busca el valor de upload_max_filesize, quizá este en 2MB que es el valor por default. Si sobrepasa al límite que quieres establecer ya la hiciste, haz la validación en tu script:
Código PHP:
if($_FILES['tu_archivo']['size']>xxxxxx// Donde 'xxxxxxx' será tu límite en bytes
      
echo "El archivo es muy pesado"
Si el límite establecido por el servidor es inferior al requerido por tí consulta a tu proovedor, comunicales tus necesidades y vé si pueden modificar algo por ahí... estás pagando, es tu derecho! .

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

"100 años después, la revolución no es con armas, es intelectual y digital"
  #16 (permalink)  
Antiguo 24/11/2005, 01:15
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 20 años, 5 meses
Puntos: 0
Bueno creo que este arroz ya se cosio y que bueno que elscript se fue perfeccionando
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #17 (permalink)  
Antiguo 24/11/2005, 13:51
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Este post me termino ayudando a mi tambien, ahora que necesitaba info sobre archivos...

La verdad da gusto ver como se ponen las pilas para ayudar che, aunque no sea quien para hacerlo, los felicito.
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:11.