Foros del Web » Programando para Internet » PHP »

Problema con Uploadfile

Estas en el tema de Problema con Uploadfile en el foro de PHP en Foros del Web. Qué tal?, este es un problema que tengo, no sé a qué se deba, pero espero que si alguien ha pasado por algo similar me ...
  #1 (permalink)  
Antiguo 19/05/2005, 11:44
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 12 años, 9 meses
Puntos: 0
Exclamación Problema con Uploadfile

Qué tal?, este es un problema que tengo, no sé a qué se deba, pero espero que si alguien ha pasado por algo similar me diga cómo lo solucionó:

Tengo una página que se encarga de bajar documentos del servidor, cuando se le hace una petición de este tipo:

http://localhost/bivi/Guardar.php?re...=UniAD03ANT001

hasta ahí no hay problema, el problema viene cuando me aparece el cuadro de elección entre Abrir, Guardar y Cancelar. Si le doy clic en Abrir, me dice que el archivo no se puede abrir, este es el mensaje que me envía con un documento PDF:

There was an error opening this document. This file cannot be found.

y para un archivo PPT:

Ruta de Acceso o nombre de archivo C:\Documents and Settings\Gabriel\Configuración local\Archivos temporales de Internet\Content.IE5\NP0KKJ3Z\Adjectives class intermediate[1].ppt no válido. Compruebe que estos datos son correctos.

Lo raro está en que si elijo la opción Guardar, sí me guarda correctamente el archivo en la ubicación que yo especifique. Y como se hará una demostración de mi página, no quiero que esto pase ese día, lo intento desde mi mismo servidor y pasa eso, lo intento desde otra computadora accediendo a mi servidor y pasa lo mismo. No sé si sea importante, pero no creo, el archivo PPT pesa 326 KB, y el PDF pesa 5,393 KB. Si alguien puede ayudarme, Gracias.
  #2 (permalink)  
Antiguo 19/05/2005, 14:25
 
Fecha de Ingreso: marzo-2004
Ubicación: gualeguauychu
Mensajes: 25
Antigüedad: 13 años, 8 meses
Puntos: 3
Upoad file con PHP es un drama

Hola, mira yo la verdad no entiendo bien cual es el problema tuyo pero en algo siminila queme ocurrio utilize un fucion entre php y cgi. aqui te dejo un tutorual con los archivos para que lo mires, ojala te pueda ayudar
Tutorual y descarga de archivos

saludos
  #3 (permalink)  
Antiguo 19/05/2005, 14:48
Avatar de sanjo  
Fecha de Ingreso: enero-2005
Mensajes: 404
Antigüedad: 12 años, 10 meses
Puntos: 0
yo lo necesito sacar pal lunes, y no hay manera joder
__________________
¿Quiere echarte unas risas y ver cosas espectaculares?
Nomeessentado.com
  #4 (permalink)  
Antiguo 20/05/2005, 07:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Gabriel0702

Si nos pones el código que usas para ir evaluando la situación .. se verá mejor tu problema.

Por qué .. hay que comprobar muchas coas, no sólo de tu código en sí .. sino de los datos que trabajas (si toman los valores esperados) .. entre otras cosas.

Un saludo,
  #5 (permalink)  
Antiguo 20/05/2005, 07:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No es necesario que uses "CGI" para subir archivos al servidor .. vía PHP. Lo que es necesario es que tengas presente que "PHP" se configura para tal fin y saber que configuración afecta.

Por supuesto .. si estás en un caso de "proveedor X" que te dá acceso PHP y CGI .. donde no puedes alterar la configuración de PHP en esos temas (cosa que no se pueda más que por tu php.ini) .. entonces, esa solución es completamente válida. Mi comentario va orientado a "cuando" se tiene acceso a la configuración de PHP y otros.

Cuando usas ese "CGI" lo único que haces es usar eso mismo para subir el archivo .. en CGI no hay restricciones del "archivo a subir" por eso no afectan las limitaciones que PHP en su php.ini impone. Además de las que Apache puede afectar e incluso si tu archivo va a parar a una BD las de esta también ..

Tienen una FAQ sobre este tema concreto de reciente creación para que lo prueben:
http://www.forosdelweb.com/showpost....&postcount=146

Una vez solventado "la configuración" de PHP .. probamos alguno de los códigos que vemos en las mismas FAQ's o en la documentación oficial de PHP sobre "upload".

Lo que vengo a decir con esto es que .. para bien o para mal .. PHP es configurable, y hay que conocer que configuración de PHP (y de otros anexos) nos puede afectar a lo que hagamos nos funcione como nos dicen los "ejemplos" que si que funcionan. Uno no se puede "abstraer" de este hecho (no sólo para este tema .. sino para cualquier cosa: sesiones, uso de ciertas extensiones como GD .. etc .. etc ...).

Un saludo,
  #6 (permalink)  
Antiguo 20/05/2005, 11:35
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 12 años, 9 meses
Puntos: 0
Este es mi código

Este es mi código, no creo que tenga errores, porque como mencioné en el primer mensaje, el problema se presenta cuando intento "abrir" el archivo, cuando le doy clic en "guardar" sí lo baja correctamente, pero bueno, aquí está el código:

Código PHP:
if (isset($_GET['recordID'])) {
  
$colname_rsDocumentSave = (get_magic_quotes_gpc()) ? $_GET['recordID'] : addslashes($_GET['recordID']);
}
mysql_select_db($database_connBDBV$connBDBV);
$query_rsDocumentSave sprintf("SELECT * FROM documentos WHERE ClaveD = '%s'"$colname_rsDocumentSave);
$rsDocumentSave mysql_query($query_rsDocumentSave$connBDBV) or die(mysql_error());
$row_rsDocumentSave mysql_fetch_assoc($rsDocumentSave);
$totalRows_rsDocumentSave mysql_num_rows($rsDocumentSave);

   
$filename $row_rsDocumentSave['DirAccDir'];
   
$file_extension strtolower(substr(strrchr($filename,"."),1));
   
$len=filesize($filename);

   switch( 
$file_extension ) {
         case 
"pdf"$ctype="application/pdf"; break;
     case 
"exe"$ctype="application/octet-stream"; break;
     case 
"zip"$ctype="application/zip"; break;
     case 
"doc"$ctype="application/msword"; break;
     case 
"xls"$ctype="application/vnd.ms-excel"; break;
     case 
"ppt"$ctype="application/vnd.ms-powerpoint"; break;
     case 
"gif"$ctype="image/gif"; break;
     case 
"png"$ctype="image/png"; break;
     case 
"jpeg":
     case 
"jpg"$ctype="image/jpg"; break;
     case 
"mp3"$ctype="audio/mpeg"; break;
     case 
"wav"$ctype="audio/x-wav"; break;
     case 
"mpeg":
     case 
"mpg":
     case 
"mpe"$ctype="video/mpeg"; break;
     case 
"mov"$ctype="video/quicktime"; break;
     case 
"avi"$ctype="video/x-msvideo"; break;
     
//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
     
case "php":
     case 
"htm":$ctype="text/html"; break;
     case 
"html":$ctype="text/html";break;
     case 
"txt"$BandInter=TRUE; break;

     default: 
$ctype="application/force-download";
   }

    
header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    
header ('Content-Type: $ctype');

    
header('Content-Disposition: attachment; filename="' basename($row_rsDocumentSave['DirAccDir']) . '"');

    
header("Content-Length: "filesize($row_rsDocumentSave['DirAccDir']));

    
readfile($row_rsDocumentSave['DirAccDir'], dirname($row_rsDocumentSave['DirAccDir'])); 
Ahorita voy a leer la page que me dieron como referencia, a ver qué es lo que encuentro:

http://www.viacero.com/index.php?sector=cgi_php
  #7 (permalink)  
Antiguo 20/05/2005, 11:44
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 12 años, 9 meses
Puntos: 0
Bueno, Gracias Chacalito por la referencia de la página y gracias Cluster por tus aportaciones hasta ahora, pero mi problema no es subir archivos grandes al servidor, en eso no tengo problemas, mi problema es que cuando quiero bajar un archivo, y me aparece el cuadro de diálogo, si le doy clic en "abrir", me marca un error y no puedo abrir el archivo, pero si le doy en "guardar", sí lo guarda correctamente, lo único que yo quiero es que no exista el problema cuando le de clic en abrir, como vieron en mi mensaje, les mencioné que el archivo PPT que intenté "abrir" pesaba incluso menos de medio MB, o sea, que no creo que sea un problema relacionado con el tamaño, ayuda porfa... y gracias
  #8 (permalink)  
Antiguo 20/05/2005, 17:23
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 12 años, 9 meses
Puntos: 0
Ya lo intenté con todos mis archivos, y con todos pasa lo mismo, qué será?
  #9 (permalink)  
Antiguo 24/05/2005, 08:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. en principio todos esos problemas son dados por las cabeceras HTTP que usas. Deberías revisar algunos aspectos:

1) que el formato MIME de tu archivo sea el correcto detectado por el código que usas que lo tienes en: $ctype

A todo esto .. si subes tu archivo por tu script PHP de "upload" .. cuando lo subes tienes ya a tu disposición el formato MIME del archivo que subió en: $_FILES['archivo']['type'] .. ese dato te lo tendrías que guardar en un campo + de tu tabla de archivos para: a) no tener que "en función de la extensión del archivo" intentar "asignar" un formato MIME del archivo, lo cual no es seguro. b) asegurarte del formato MIME exactamente cual es detectado por las propiedades del archivo .. no por su "extensión" que puede ser adulterada fácilmente cambiando el nombre del archivo.

2) Probar otros navegadores y observar como se comportan tus cabeceras HTTP .. (pero me "dá" que tienes problemas con el formato MIME del archivo, no es identificado correctamente).

Un saludo,
  #10 (permalink)  
Antiguo 26/05/2005, 19:47
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 12 años, 9 meses
Puntos: 0
Ok, gracias, Cluster, ya hice lo que me propusiste, que la verdad no lo había pensado, ahora ya puedo decir que está mejor el funcionamiento en general de la página, sin embargo, te comento que aún con mis cambios, me pasa la misma situación, ya probé con FireFox 1.0.4 y ahí no hay problema, creo que definitivamente lo que chafea es el IE. Gracias.
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:57.