Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von Juni

SELFHTML Forumsarchiv
Datei mit selbst erstelltem Format herunterladen

Informationsseite
  1. Seite (PROGRAMMIERTECHNIK) Datei mit selbst erstelltem Format herunterladen von Thomas, 29. 06. 2007, 18:55
nach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Thomas, 29. 06. 2007, 18:55

Hallo Leute,

ich programmiere eine Suchseite für eine Datenbank. In der Datenbank gibt es viele Dateien, die in einem selbst erstellten Komprimierungsformat vorliegen. Diese Dateien sollen die Benutzer per Links direkt herunterladen können. Bei einem Linksklick klappt das aber nur beim IE, Firefox dagegen öffnet die Datei leider immer im Browser, egal was ich mache.

Ich habe schon so ziemlich alles ausprobiert, was ich hier im Forum gefunden habe und nichts funzt.

Jede der folgenden Zeilen lässt Firefox völlig kalt:

<a href=”datei.abc” type=”application/abc”>Datei</a>
<a href=”datei.abc” type=”application/octet-stream”>Datei</a>

Die Header per PHP zu ändern führte dazu, daß beim Aufruf der PHP-Seite, die das Suchformular und die Ergebnisse darstellt, gleich die ganze Seite als solche per Download angeboten wurde:

header("Content-Type:application/abc");
header("Content-Disposition:attachment");

Kann mir jemand helfen?

Schon mal danke & Gruß
Thomas

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Rouven, 29. 06. 2007, 19:09

Hello,


»» <a href=”datei.abc” type=”application/abc”>Datei</a>
»» <a href=”datei.abc” type=”application/octet-stream”>Datei</a>

»» header("Content-Type:application/abc");
»» header("Content-Disposition:attachment");
(1) kombiniere beides oder (2) stelle den Server richtig ein:

(1) Liefere datei.abc nicht direkt aus, sondern lass sie von einem PHP-Skript ausliefern (exemplarisch: href="download.php?file=datei.abc") -> dort kannst du den "richtigen" Content-Type senden.

(2) bringe deinem Server bei, dass .abc-Dateien mit einem anderen Content-Type auszuliefern sind.

MfG
Rouven

--
-------------------
Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Thomas, 29. 06. 2007, 19:47

Hallo Rouven,

danke für deine Antwort.

Ich gehe so vor, wie du bei (1) schreibst.

In der Datei "download.php" steht nun drin:

<?php
header("Content-Type:application/x-abc");
header("Content-Disposition:attachment");

$datei = $_GET['datei'];

echo "<a href='../" . $datei . "' type='application/x-abc'>datei</a>";
?>

Leider führen die zwei header-Zeilen nur dazu, daß nun die Datei "download.php" zum Öffnen/Download angeboten wird und der Link weiter unten völlig ignoriert wird.

Gruß
Thomas


»» Hello,
»»
»»
»» »» <a href=”datei.abc” type=”application/abc”>Datei</a>
»» »» <a href=”datei.abc” type=”application/octet-stream”>Datei</a>
»»
»» »» header("Content-Type:application/abc");
»» »» header("Content-Disposition:attachment");
»» (1) kombiniere beides oder (2) stelle den Server richtig ein:
»»
»» (1) Liefere datei.abc nicht direkt aus, sondern lass sie von einem PHP-Skript ausliefern (exemplarisch: href="download.php?file=datei.abc") -> dort kannst du den "richtigen" Content-Type senden.
»»
»» (2) bringe deinem Server bei, dass .abc-Dateien mit einem anderen Content-Type auszuliefern sind.
»»
»» MfG
»» Rouven
»»

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Rouven, 29. 06. 2007, 19:56

Hello,


»» Ich gehe so vor, wie du bei (1) schreibst.
nope, tust du nicht.

»» In der Datei "download.php" steht nun drin:
»» echo "<a href='../" . $datei . "' type='application/x-abc'>datei</a>";
was machst du als? Richtig, du schreibst einen HTML-Link raus. Warum sollte das den Browser interessieren? Noch schlimmer, wenn du jetzt einen unbekannten Content-Type sendest, dann kann er das ja noch nicht mal als HTML identifizieren...
Du willst was anderes, glaub mir, ich weiß das :-)
Du willst in der download.php den INHALT von deiner Datei anbieten, nicht einen Link darauf, vgl. PHP-FAQ.


MfG
Rouven

--
-------------------
Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Thomas, 29. 06. 2007, 20:24

Hallo Rouven,



»» Du willst was anderes, glaub mir, ich weiß das :-)
»» Du willst in der download.php den INHALT von deiner Datei anbieten, nicht einen Link darauf, vgl. PHP-FAQ.

Habe ich beides getestet:
- Der redirect führt immer dazu, daß die Datei direkt im Browser geöffnet wird.

- wenn ich den Download innerhalb von PHP abhandeln lasse, wird wieder nur die PHP-Seite selbst zum öffnen/speichern angeboten. Der Code dazu sieht so aus:



<?php

header("Content-Type: application/x-abc");
header("Content-Disposition: attachment; filename=\"a.abc\"");


$datei = $_GET['datei'];

$address = "Location: http://adresse_des_webservers/" . $datei;

readfile($address);

?>

Die Angabe von "a.abc" im header bewirkt nur, daß die PHP-Seite unter diesem statt ihrem eigenen Namen zum öffnen/speichern angeboten wird.

Gruß
Thomas

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Johannes Zeller, 29. 06. 2007, 20:34

Hallo Thomas,

»» $address = "Location: http://adresse_des_webservers/" . $datei;
»»
»» readfile($address);

Was soll das denn werden? ;-)

readfile() erwartet als Parameter einen Dateinamen oder eine URL und nicht eine HTTP-Headerangabe. Also etwas in dieser Richtung:

readfile('http://www.example.org/'.$datei);

Schöne Grüße,

Johannes

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Thomas, 29. 06. 2007, 20:53

Hallo Rouven, Cheatah und Johannes,

ich habe das Problem nun so gelöst:

in der Datei "mime.types" habe ich beim Eintrag "application/octet-stream" einfach unsere Dateiendung noch zu den vorhandenen hinzugefügt:

application/octet-stream   bin dms lha lzh exe class so dll dmg abc

Dann Apache neu gestartet, im Link zur Datei natürlich den Eintrag

type='application/octet-stream'

nicht vergessen und es geht!!! :-))

Vielen Dank für eure Hilfe
Grüße
Thomas

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Cheatah, 29. 06. 2007, 19:27

Hi,

»» Jede der folgenden Zeilen lässt Firefox völlig kalt:

ja, tut es.

»» <a href=”datei.abc” type=”application/abc”>Datei</a>

Abgesehen von den ungültigen Anführungszeichen und dem Umstand, dass das type-Attribut höchstens Auswirkungen hat, die Du garantiert nicht meinst: Diesen MIME-Type gibt es nicht. Er muss "application/x-abc" heißen.

»» Die Header per PHP zu ändern führte dazu, daß beim Aufruf der PHP-Seite, die das Suchformular und die Ergebnisse darstellt, gleich die ganze Seite als solche per Download angeboten wurde:

Warum willst Du auch etwas anderes mit dem MIME-Type versehen als diejenige Ressource, die ihn haben soll?

Cheatah

--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Thomas, 29. 06. 2007, 19:51

Hallo Cheatah,


»» »» <a href=”datei.abc” type=”application/abc”>Datei</a>
»»
»» Abgesehen von den ungültigen Anführungszeichen und dem Umstand, dass das type-Attribut höchstens Auswirkungen hat, die Du garantiert nicht meinst: Diesen MIME-Type gibt es nicht. Er muss "application/x-abc" heißen.

Die Anführungszeichen kamen durch copy&paste hier ins Forum. Danke für den Tip bzgl. des MIME-Typen, ich habe ihn geändert.


»»
»» »» Die Header per PHP zu ändern führte dazu, daß beim Aufruf der PHP-Seite, die das Suchformular und die Ergebnisse darstellt, gleich die ganze Seite als solche per Download angeboten wurde:
»»
»» Warum willst Du auch etwas anderes mit dem MIME-Type versehen als diejenige Ressource, die ihn haben soll?

Ok, ich lasse diese zwei header-Zeilen weg. Leider führt aber nach wie vor die Zeile

<a href='datei.abc' type='application/x-abc'>datei</a>

dazu, daß die Datei in Firefox direkt geöffnet wird, also keine Änderung. :-(

Gruß
Thomas

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Cheatah, 29. 06. 2007, 22:04

Hi,

»» »» Abgesehen von [...] dem Umstand, dass das type-Attribut höchstens Auswirkungen hat, die Du garantiert nicht meinst: [...]
»» Leider führt aber nach wie vor die Zeile
»» <a href='datei.abc' type='application/x-abc'>datei</a>
»» dazu, daß die Datei in Firefox direkt geöffnet wird, also keine Änderung. :-(

was exakt dem entspricht, was ich sagte.

»» »» Warum willst Du auch etwas anderes mit dem MIME-Type versehen als diejenige Ressource, die ihn haben soll?
»» Ok, ich lasse diese zwei header-Zeilen weg.

Mir ist nicht klar, wie Du aufgrund des von mir Gesagten zu dieser Schlussfolgerung kommst.

Cheatah

--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes

nach obennach unten

Datei mit selbst erstelltem Format herunterladen

Die folgende Nachricht zum Thema stammt von: Thomas, 29. 06. 2007, 20:02

Eine Sache, die mir noch einfällt: ich habe die Datenbank und die PHP-Dateien sowohl lokal auf meinem PC laufen, als auch auf unserem Server.

Wenn ich den Download-Link (in Firefox mit links) lokal anklicke, dann kann ich die Datei herunterladen, so wie ich es möchte. Nur auf dem Server geht es nicht. Ich erwähne das erst jetzt, weil bisher vieles lokal ging, was dann auf dem Server nicht mehr lief...

Aber vielleicht liegt der Unterschied in der httpd.conf vom Apache Webserver - würde ein Eintrag hier Abhilfe schaffen?

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von Juni

© 1998-2006 Seite Impressum, Software: Classic Forum