Avatar billede madsringblom Nybegynder
02. august 2006 - 11:00 Der er 6 kommentarer og
1 løsning

download via flash og php

Hej Eksperter jeg kalder et php-script fra flash for at downloade nogle mp3 filer men det virker ikke helt efter hensigten.. i får lige koden og derefter forklaringen:
i download.php:
<?php
    $dir= "./download/";//mappe som filerne ligger i
    if(!$_GET['file']) { //hvis file ikke er sat
        print "Filen findes ikket";
        exit;
        }
    elseif(!file_exists($dir.$_GET['file'])) { //hvis filen ikke eksistere
        print "Filen findes ikke";
        exit;
        }
    else {
        header("Content-Type: octet/stream");
        header("Content-Disposition: attachment; filename=\"".$_GET['file']."\"");
        $fp = fopen($dir.$_GET['file'], "r");
        $data = fread($fp, filesize($dir.$_GET['file']));
        fclose($fp);
        print $data;
    }
?>
//////////////////
i flash:
on (release) {
    getURL("dinphpfil.php?file=dinDownLoadFil", "_self");
}
///////////////
(Koden fik jeg iøvrig fra 'webt' i et andet spørgsmål her på eksperten!)
Den åbner godt nok en åbn/gem-dialogboks men angiver for det meste filstørrelsen til 196 byte (og downloader altså kun 196 bytes) ca 1 ud af 10 gange virker det dog (oftere ved de mindre filer end de store) jeg er helt lost og ved ikke om fejlen skal findes i flash, php eller et tredje sted ????????
På forhånd tak for alt hjælp! Mads
Avatar billede tribalroots Nybegynder
02. august 2006 - 11:12 #1
Kan ikke svare dig på ovenstående, men jeg må bare lige stille min nysgerrighed; Skal mp3'erne skal streames!?! Og i så fald, er mængden af mp3'er skiftende, eller er det altid de samme!?!
Avatar billede madsringblom Nybegynder
02. august 2006 - 12:04 #2
Mp3 erne skal ikke streames men downloades helt. og hver download knap refererer til én mp3-fil. Disse filer er altid de samme! håber det var svar nok :)
Avatar billede webt Nybegynder
07. august 2006 - 10:42 #3
Hej Mads,
Faldt lige over spørgsmålet her, kan du evt. sende mig dine eksempelfiler på mail [a] martin - nielsen . com
selvfølgelig uden mellemrum og erstat [a] med @

så kigger jeg lige lidt på det en af dagene, vi kan jo ikke ha en gammel løsning der ikke virker :)

Mvh
Martin
Avatar billede madsringblom Nybegynder
07. august 2006 - 13:41 #4
Det lyder super, jeg gør det med det samme!
Avatar billede webt Nybegynder
08. august 2006 - 08:29 #5
Hey som aftalt - nyt php script fundet på php.net - scriptet er som du ser en del mere omfattende - men det eneste du skal bekymre dig om er sådan set $fpath = "press/$fname"; som jeg allerede har rettet så den passer til dit - men det er altså der du ændre press delen hvis du ønsker at flytte filerne på et tidspunkt
<?php
### Script fra php.net

$fname = $_GET['file'];
$fpath = "press/$fname";
$fsize = filesize($fpath);
$bufsize = 20000;

if(isset($_SERVER['HTTP_RANGE']))  //Partial download
{
  if(preg_match("/^bytes=(\\d+)-(\\d*)$/", $_SERVER['HTTP_RANGE'], $matches)) { //parsing Range header
      $from = $matches[1];
      $to = $matches[2];
      if(empty($to))
      {
          $to = $fsize - 1;  // -1  because end byte is included
                              //(From HTTP protocol:
// 'The last-byte-pos value gives the byte-offset of the last byte in the range; that is, the byte positions specified are inclusive')
      }
      $content_size = $to - $from + 1;

      header("HTTP/1.1 206 Partial Content");
      header("Content-Range: $from-$to/$fsize");
      header("Content-Length: $content_size");
      header("Content-Type: application/force-download");
      header("Content-Disposition: attachment; filename=$fname");
      header("Content-Transfer-Encoding: binary");

      if(file_exists($fpath) && $fh = fopen($fpath, "rb"))
      {
          fseek($fh, $from);
          $cur_pos = ftell($fh);
          while($cur_pos !== FALSE && ftell($fh) + $bufsize < $to+1)
          {
              $buffer = fread($fh, $bufsize);
              print $buffer;
              $cur_pos = ftell($fh);
          }

          $buffer = fread($fh, $to+1 - $cur_pos);
          print $buffer;

          fclose($fh);
      }
      else
      {
          header("HTTP/1.1 404 Not Found");
          exit;
      }
  }
  else
  {
      header("HTTP/1.1 500 Internal Server Error");
      exit;
  }
}
else // Usual download
{
  header("HTTP/1.1 200 OK");
  header("Content-Length: $fsize");
  header("Content-Type: application/force-download");
  header("Content-Disposition: attachment; filename=$fname");
  header("Content-Transfer-Encoding: binary");

  if(file_exists($fpath) && $fh = fopen($fpath, "rb")){
      while($buf = fread($fh, $bufsize))
          print $buf;
      fclose($fh);
  }
  else
  {
      header("HTTP/1.1 404 Not Found");
  }
}
?>

Mvh
Martin
Avatar billede madsringblom Nybegynder
08. august 2006 - 20:14 #6
Yehaa !!! Det virker. Point givet. Kig ind på www.elephants.dk for at se siden som den skal se ud! (samt høre det lækre musik!)
Avatar billede webt Nybegynder
08. august 2006 - 21:13 #7
Takker for points :)

Ser godt ud og ganske fin musik også :)

Fortsat god dag/aften osv

Mvh
Martin
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester