Gå til innhold

Problemer med Header() og sending av filer...


Anbefalte innlegg

I et browser script jeg har laget har jeg en funksjon for og laste ned filen, men filen blir altid korrupt når jeg sender den:(

 

hra funnet ut at vis jeg ikke endrer headeren så blir ikke filen korrupt( den sender altid en ekstra newline ved bruk av header()), noen som også har merket dette?

 

her er koden min nå:

 

(ajax.php) funksjonen som brukes er 'download'....

Klikk for å se/fjerne innholdet nedenfor

<?php
   include 'functions.php'; 
?>

<?php
   if (session_id() == "") {
       session_start();
       session_id($_GET['session']); 
   }
   
   if (auth($_SESSION['user'], $_SESSION['md5']) == 1) {
       switch ($_GET['function']) {
           case 'dir':
               $path = $_GET['path'];
               
               echo listDir($path);
               break;
           case 'timer':
               echo date("H:i:s");
               break;
           case 'loadfile':
               $fh = fopen($_GET['filename'], 'rb');
               
               header("Content-Type: text/*");
               header("Content-Length: " . filesize($_GET['filename']));
               
               //$buffer = fread($fh,filesize($_GET['filename']) );
               
               fpassthru($fh);
               
               fclose($fh);
               break;
           case 'loadpicture':
               $fh = fopen($_GET['path'], 'rb');
               $filenm = substr($_GET['path'], strrpos($_GET['path'], "\\") + 1);
               
               readfile($_GET['path']);
               
               /*
               header("Content-Type: image/*");
               header("Content-Length: " . filesize($_GET['filename']));
               Header("Content-Disposition: attachment; Filename=".$filenm);
               
               //$buffer = fread($fh, filesize($_GET['path']));
               //echo $buffer;
               //debugprint('TEST:'.$buffer);
               
               ?>
               <html>
               <head><title><?php echo $_GET['filename']; ?></title></head>
               <body>
                   <img>
               </body>
               </html>
               <?php
               */
               
               //fpassthru($fh);
               
               fclose($fh);
               break;
           case 'loadvideo':
               $url = "ajax.php?function=loadvideo2&path=".$_GET['path']."&session=".$_GET['session']
               ?>
               <!doctype html public "-//w3c//dtd html 3.2//en">
               <html>
                   <head>
                   
                     <title>Embedded Video Example</title>
                     <meta name="keywords" content="">
                     <meta name="Generator" content="HTMLpad">
                   
                   <script language="JavaScript">
                   
                   function openindex()
                       {   
                           OpenWindow=window.open("", "newwin", "height=200,width=285,toolbar=no,scrollbars="+scroll+",menubar=no");
                           OpenWindow.document.write("<TITLE>My Embedded Video</TITLE>")
                           OpenWindow.document.write("<BODY BGCOLOR=000000>")
                           OpenWindow.document.write("<EMBED SRC=<?php echo $url; ?> AUTOSTART=true></EMBED>")
       
                           OpenWindow.document.write("</HTML>")
                     OpenWindow.document.close()
                           self.name="main"
                       }
                   </SCRIPT>
                   
                   
                   </head>
                   <body bgcolor="c0c0c0" onLoad="openindex()">
                   <P> <P>
                   
                   
                   <CENTER><h2>Video Embed Example</h2></CENTER>
                   
                   
                   
                   </body>
               </html>
               <?php 
               break;
           case 'loadvideo2':
               $fh = fopen($_GET['path'], 'rb');
               
               $player = 4;
               switch ($player) {
                   case 0: header("Content-type: video/x-ms-asf "); break;
                   case 1: header("Content-type: application/x-mplayer2"); break;
                   case 2: header("Content-type: video/x-video avi"); break; //video/avi
                   case 3: header("Content-type: video/avi"); break;
                   case 4:
                       Header("Content-Type: video/x-mediaurl");
                       Header("Accept-Ranges: bytes");
                       break;
                   case 5:
                       Header("Content-Type: ".mime_content_type($_GET['path']));
                       break;
               }
               
               header("Content-Length: " . filesize($_GET['path'])); 
               Header("Content-Disposition: attachment; Filename=".$_GET['path']);
               
               fpassthru($fh);
               
               fclose($fh);
               
               break;
           case 'download-m3u':
               $content = "#EXTM3U".chr(92);
               $content = $content."http://blackhawk.mine.nu/richard2/ajax.php?function=download&path=".$_GET['path']."&session=".$_GET['session'].'&filetype=avi';
               
               //header("Content-Type: application/x-vlc-plugin");
               header("Content-Type: application/octet-stream");
               header("Content-Disposition: attachment; filename=\"playlist.m3u\"");
               
               header("Content-Length: " . filesize($_GET['path']));
               
               echo $content;
               
               break;
           case 'download':
               $fh = fopen($_GET['path'], 'rb');
               
               $filenm = substr($_GET['path'], strrpos($_GET['path'], "\\") + 1);
               
               header("Content-Type: application/octet-stream");
               header("Content-Transfer-Encoding: binary");
               header('Content-Disposition: attachment; filename="'.$filenm."'");
               header("Content-Length: " . filesize($_GET['path']));
               
               fpassthru($fh);
               
               fclose($fh);
               
               break;
           default:
               echo "Function Not Registered!";
               break;
       }        
   } else {
       gotoindex();
   }

?>

den koden legger ti lett new line i begynnelsen:(

 

mens denne (test2.php) legger ikke til en newline...

<?php

$fh = fopen("C:\php_auth.log", 'rb');

header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: attachment; filename="php_auth.log"');
header("Content-Length: " . filesize("C:\php_auth.log"));

fpassthru($fh);

fclose($fh);
?>

 

any idea?

 

 

[EDIT]la til noe...

Endret av Richard87
Lenke til kommentar
Videoannonse
Annonse

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...