Foros del Web » Programando para Internet » PHP »

problema con header

Estas en el tema de problema con header en el foro de PHP en Foros del Web. Cuando uso este script para abrir un archivo rar o zip por ejemplo, (no probe con muchas por ai puede ser con otras extensiones) me ...
  #1 (permalink)  
Antiguo 31/03/2010, 01:07
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
problema con header

Cuando uso este script para abrir un archivo rar o zip por ejemplo, (no probe con muchas por ai puede ser con otras extensiones) me dice 'El archivo tiene un formato desconocido o esta dañado'. Y con archivos txt, o mp3, etc. no pasa eso. :S

Cual es el problema?

Código PHP:
<?php
// GET
$f0=$_GET['f0'];
$f1=$_GET['f1'];
$file_name=$_GET['id'];

$file_download "$f0/$f1/$file_name";
header ("Content-Disposition: attachment; filename=\"".$file_name."\"\n\n"); 
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($file_download));
readfile($file_download);
?>
  #2 (permalink)  
Antiguo 31/03/2010, 06:28
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: problema con header

quiza tenga que ver con el mime type.. intenta darle el content type adecuado a cada archivo por su extencion.. aqui te dejo una lista de los mime types

http://reference.sitepoint.com/html/mime-types-full

y aca la funcion que te puede ayudar con tu proceso

http://cl.php.net/manual/en/function...ntent-type.php

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 31/03/2010, 08:47
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problema con header

Muchas gracias, entendi lo que hay que hacer. Pero me tira este error:

Código PHP:
if(!function_exists('mime_content_type')) {

    function 
mime_content_type($filename) {

        
$mime_types = array(

            
'txt' => 'text/plain',
            
'htm' => 'text/html',
            
'html' => 'text/html',
            
'php' => 'text/html',
            
'css' => 'text/css',
            
'js' => 'application/javascript',
            
'json' => 'application/json',
            
'xml' => 'application/xml',
            
'swf' => 'application/x-shockwave-flash',
            
'flv' => 'video/x-flv',

            
// images
            
'png' => 'image/png',
            
'jpe' => 'image/jpeg',
            
'jpeg' => 'image/jpeg',
            
'jpg' => 'image/jpeg',
            
'gif' => 'image/gif',
            
'bmp' => 'image/bmp',
            
'ico' => 'image/vnd.microsoft.icon',
            
'tiff' => 'image/tiff',
            
'tif' => 'image/tiff',
            
'svg' => 'image/svg+xml',
            
'svgz' => 'image/svg+xml',

            
// archives
            
'zip' => 'application/zip',
            
'rar' => 'application/x-rar-compressed',
            
'exe' => 'application/x-msdownload',
            
'msi' => 'application/x-msdownload',
            
'cab' => 'application/vnd.ms-cab-compressed',

            
// audio/video
            
'mp3' => 'audio/mpeg',
            
'qt' => 'video/quicktime',
            
'mov' => 'video/quicktime',

            
// adobe
            
'pdf' => 'application/pdf',
            
'psd' => 'image/vnd.adobe.photoshop',
            
'ai' => 'application/postscript',
            
'eps' => 'application/postscript',
            
'ps' => 'application/postscript',

            
// ms office
            
'doc' => 'application/msword',
            
'rtf' => 'application/rtf',
            
'xls' => 'application/vnd.ms-excel',
            
'ppt' => 'application/vnd.ms-powerpoint',

            
// open office
            
'odt' => 'application/vnd.oasis.opendocument.text',
            
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
        );

        
$ext strtolower(array_pop(explode('.',$filename)));
        if (
array_key_exists($ext$mime_types)) {
            return 
$mime_types[$ext];
        }
        elseif (
function_exists('finfo_open')) {
            
$finfo finfo_open(FILEINFO_MIME);
            
$mimetype finfo_file($finfo$filename);
            
finfo_close($finfo);
            return 
$mimetype;
        }
        else {
            return 
'application/octet-stream';
        }
    }
}
mime_content_type('registroUsuarios.htm'

Strict Standards: Only variables should be passed by reference in C:\AppServ\www\scripts\buscar.php on line 74
  #4 (permalink)  
Antiguo 31/03/2010, 08:53
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: problema con header

y cual seria la linea 74 de buscar.php ?
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 31/03/2010, 08:57
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problema con header

Linea 74:
Código PHP:
Ver original
  1. $ext = strtolower(array_pop(explode('.',$filename)));

Y si pongo SOLO esta linea que encontre en PHP.net de la funcion que me pasaste:
Código PHP:
Ver original
  1. echo mime_content_type('test.php');
Me dice que no existe la funcion.
  #6 (permalink)  
Antiguo 31/03/2010, 09:03
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: problema con header

prueba reemplazando esa linea por
Código PHP:
Ver original
  1. $ext = explode('.',$filename);
  2. $ext = array_pop($ext);
  3. $ext = strtolower($ext);
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 31/03/2010, 09:15
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Muchisimas gracias! :)

Funciono... (EDITO Y ACLARO QUE NO ME FUNCIONA. ES DECIR LA FUNCION SI ANDA, PERO SIGUE DANDO EL MISMO ERROR.)

Perdon por el doble post, pero pense que lo tenia resuleto, y surgio que el problema no era eso :S me sigue dando el mismo error.

Alguna ayuda?

Última edición por GatorV; 31/03/2010 a las 16:57
  #8 (permalink)  
Antiguo 31/03/2010, 14:52
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: problema con header

quitale la primera condicional y cambiale el nombre a otro
te dejo la function modificada

Código PHP:
Ver original
  1. function getMime($filename) {
  2.     $mime_types = array(
  3.     'txt' => 'text/plain',
  4.     'htm' => 'text/html',
  5.     'html' => 'text/html',
  6.     'php' => 'text/html',
  7.     'css' => 'text/css',
  8.     'js' => 'application/javascript',
  9.     'json' => 'application/json',
  10.     'xml' => 'application/xml',
  11.     'swf' => 'application/x-shockwave-flash',
  12.     'flv' => 'video/x-flv',
  13.    
  14.     // images
  15.     'png' => 'image/png',
  16.     'jpe' => 'image/jpeg',
  17.     'jpeg' => 'image/jpeg',
  18.     'jpg' => 'image/jpeg',
  19.     'gif' => 'image/gif',
  20.     'bmp' => 'image/bmp',
  21.     'ico' => 'image/vnd.microsoft.icon',
  22.     'tiff' => 'image/tiff',
  23.     'tif' => 'image/tiff',
  24.     'svg' => 'image/svg+xml',
  25.     'svgz' => 'image/svg+xml',
  26.    
  27.     // archives
  28.     'zip' => 'application/zip',
  29.     'rar' => 'application/x-rar-compressed',
  30.     'exe' => 'application/x-msdownload',
  31.     'msi' => 'application/x-msdownload',
  32.     'cab' => 'application/vnd.ms-cab-compressed',
  33.    
  34.     // audio/video
  35.     'mp3' => 'audio/mpeg',
  36.     'qt' => 'video/quicktime',
  37.     'mov' => 'video/quicktime',
  38.    
  39.     // adobe
  40.     'pdf' => 'application/pdf',
  41.     'psd' => 'image/vnd.adobe.photoshop',
  42.     'ai' => 'application/postscript',
  43.     'eps' => 'application/postscript',
  44.     'ps' => 'application/postscript',
  45.    
  46.     // ms office
  47.     'doc' => 'application/msword',
  48.     'rtf' => 'application/rtf',
  49.     'xls' => 'application/vnd.ms-excel',
  50.     'ppt' => 'application/vnd.ms-powerpoint',
  51.    
  52.     // open office
  53.     'odt' => 'application/vnd.oasis.opendocument.text',
  54.     'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
  55.     );
  56.     $ext = explode('.',$filename);
  57.     $ext = array_pop($ext);
  58.     $ext = strtolower($ext);
  59.     if (array_key_exists($ext, $mime_types)) {
  60.         return $mime_types[$ext];
  61.     }elseif(function_exists('finfo_open')){
  62.         $finfo = finfo_open(FILEINFO_MIME);
  63.         $mimetype = finfo_file($finfo, $filename);
  64.         finfo_close($finfo);
  65.         return $mimetype;
  66.     }else{
  67.         return 'application/octet-stream';
  68.     }
  69. }
__________________
More about me...
~ @rhyudek1
~ Github
  #9 (permalink)  
Antiguo 31/03/2010, 15:55
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problema con header

Me di cuenta que no es la funcion el problema. Puse como mime "aplication/zip" y abri un zip y me tira el mismo error. Y lo peor de todo ahora, es que cuando lo descargo dice lo mismo.

Si lo abro desde mi pc antes de qe pase por la web anda, osea que el archivo no es.

Etiquetas: header
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 16:50.