Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP - Downloadscript liefert falschen Dateinamen (https://www.delphipraxis.net/71171-php-downloadscript-liefert-falschen-dateinamen.html)

SirThornberry 10. Jun 2006 08:31


PHP - Downloadscript liefert falschen Dateinamen
 
Hallo,

ich verwende bei mir auf der Homepage ein Downloadscript welches anhand einer ID eine Datei zurück gibt und eigentlich auch einen Dateinamen mit zurück geben soll. Das Script sieht wie folgt aus
Code:
<?
  require "dbconnect.php";

  $query = "Select url, filename from downloads where id = \"$id\"";
  $res = mysql_query($query, $link);
  if ($row = mysql_fetch_row($res))
  {
    $fp = fopen($row[0],"r");
    if ($fp)
    {
      header("Content-Type: application/zip");
      header("Content-Disposition: attachment; filename=".$d[1]);

      $str = fread($fp,filesize($row[0]));
      print($str);
      fclose($fp);
    }
    else
    {
      print("File not found.");
    }
    $query = "update downloads set cnt = cnt + 1 where id = \"$id\"";
    $res = mysql_query($query, $link);
  }
  else
  {
    print("invalid ID");
  }
?>
$d[1] hat bei einer der Abfragen den wert "desktopswitch.zip". Trotzdem wird zum Beispiel beim Opera die Datei als "download.zip" heruntergeladen (wenn die url so aussieht: download.php?id=desktopswitch.zip). Bei anderen Browsern wird die Datei sogar als "download.php" heruntergeladen. Wie bekomm ich es hinn das der Browser die Datei wirklich als "desktopswitch.zip" herunterlädt? (ich kann ja kaum vom Nutzer erwarten das er die Datei selbst umbenennt um mit dieser arbeiten zu können)

alcaeus 10. Jun 2006 08:35

Re: PHP - Downloadscript liefert falschen Dateinamen
 
Probiers mal so:

Code:
header('Content-Type: application/zip; name="'. $d[1] .'"');
header('Content-Disposition: inline; filename="'. $d[1] .'"');
Anstatt dem fread()-Dingen zu verwenden koenntest du uebrigens (je nach PHP-Version) auch readfile() verwenden, oder eben file() implode()en ;)

Greetz
alcaeus

SirThornberry 10. Jun 2006 08:41

Re: PHP - Downloadscript liefert falschen Dateinamen
 
ändert leider nichts. Beim Opera wird die datei weiterhin als download.zip heruntergeladen (cache etc. natürlich geleert vorm probieren).
Das es readfile gibt weiß ich, aber bin halt einer von denen die alles von Hand zu Fuß machen wollen.

alcaeus 10. Jun 2006 08:46

Re: PHP - Downloadscript liefert falschen Dateinamen
 
Moin,

und wie siehts in anderen Browsern aus? Funktionierts? Der Code funktioniert naemlich genau so auch in der DP; kommt naemlich ausm Attachment mod. Wenns in anderen Browsern funktioniert wuerde ich hoechstens auf ein Opera-Problem tippen :roll:

Greetz
alcaeus

SirThornberry 10. Jun 2006 08:48

Re: PHP - Downloadscript liefert falschen Dateinamen
 
im IE wird die Datei dann nur als "download" heruntergeladen - ohne jegliche Dateiendung. :cry:

SirThornberry 10. Jun 2006 08:53

Re: PHP - Downloadscript liefert falschen Dateinamen
 
Jetzt funktioniert es - Fehler war folgender (bitte jetzt nicht schlagen):
Und zwar hab ich auf "$d[1]" zugegriffen.
Aber die SQL-Abfrage habe ich ja auf "$row" gemacht. Das heißt "$d" war undefiniert :oops:

Balu der Bär 10. Jun 2006 09:16

Re: PHP - Downloadscript liefert falschen Dateinamen
 
Zitat:

Beim Opera wird die datei weiterhin als download.zip heruntergeladen
Falsch. Ich erhalte beim Klick auf den Link eine "desktopswitch.zip" (Opera 8.54).

Edit: Der Firefox (1.5.0.2) erhält auch ne desktopswitch.zip, geht doch also :-)

SirThornberry 10. Jun 2006 09:39

Re: PHP - Downloadscript liefert falschen Dateinamen
 
@Balu der Bär: Inzwischen funktioniert es wie es soll nachdem der Fehler behoben wurden (im übrigen ist seit ca. 10:35 eine neue version verfügbar (Änderungen: siehe letzten Beitrag des anderen Threads)).


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz