Ziel Speichern unter Fenster erzwingen

Hallo, ich habe eine Seite mit einer Liste von Links. Derzeit funktioniert das ganze nach "normalen Regeln", also wenn ich auf den Link klicke wird die Standardaktion ausgeführt, zB bei zip Dateien kommt das Speichern unter Fenster, mp3s hingegen werden mit dem Quick Time Plugin wiedergegeben.

Jetzt möchte ich dass für alle Dateien das Speichern unter Fenster kommt. Das soll zumindest im IE und Firefox funktionieren.

Mit dem IE könnte ich javascript document.execCommand benutzen, das funktioniert, aber nicht mit Firefox. Ich habe auch noch eine andere Lösung mit ASP-Files (StartDownload.asp) gefunden, aber in meinem Fall ist die nutzlos, da die verlinkten Dateien nicht auf meinem eigenen Server liegen.

Kennt jemand noch andere Möglichkeiten?

mfg gmw
 
kann man bei firefox nicht einstellen, mit welchen Programm er die dateien öffnen soll?
Bei opera habe ich für manche sachen einfach kein programm gewählt, und er gibt mir immer das Speichern ding^^

hab ff leider nicht drauf, daher kann ich dir das nicht genau sagen.
 
och mann, er meint doch, dass man, wenn man bei seiner Seite auf einen Link klickt, dass dann der Speichern unter Dialog kommt.

Nun zu deiner Frage:
Das geht doch trotzdem, wenn du eine ASP-Datei machst.
 
Mhh nun ja, ich hab jetzt was mit PHP gefunden, das funktioniert auch, das einzige Problem ist dass die Dateien, da diese auf einer Netzwerkfreigabe liegen erst über mich quasi geleitet werden.

Das ganze sieht so aus: Ich habe im Netzwerk einen Apache laufen, auf dem kann man eine Datei erreichen wo alle Netzwerkfreigaben gelistet sind. Wenn man jetzt auf eine dieser Freigaben (ein normaler Link) klickt dann wird bisher die "Standardfunktion" ausgeführt, also bei jedem User was anderes. Ich will jetzt aber eben dass nur ein Ziel Speichern Unter Fenster kommt, und das geht auch mit diesem PHP Script, aber er läd dann die Dateien über mich drüber (das führt zur Halbierung des möglichen Speeds, da ich ja lesen und senden gleichzeitig muss).

Wie kann ich es machen, dass die Datei dann direkt von der richtigen Freigabe gesaugt wird?

Code:
<?
// downloading a file use http://somewhere.com/download.php?file=name of file

$filename = $_GET['file'];
if(!$filename){ echo "ERROR: No filename specified. Please try again."; }
else {

// fix for IE catching or PHP bug issue
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
// browser must download file from server instead of cache

// force download dialog
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");

	
// use the Content-Disposition header to supply a recommended filename and
// force the browser to display the save dialog.
header("Content-Disposition: attachment; filename=".basename($filename).";");
header("Content-Transfer-Encoding: binary");

$root_path = "\\\\192.168.1.65\\";

$myfile = $root_path . $filename;
// $myfile = $filename;

header("Content-Length: ".filesize($myfile));

readfile("$myfile");

exit();
}

?>
 
Wenn ich das richtig verstehe kanns du das doch unter "Extras - Einstellungen... - Downloads - Downloadaktionen (Funktionen anzeigen und bearbeiten)" ändern oder?

Bei allem was nicht drin ist, kommt der "Speichern unter..." dialog.
 
ich weiss, dass er die frage nicht gut gestellt hat. Aber er will, dass wenn man bei seiner Seite auf einen gewissen Link klickt, der Speichern unter Dialog kommt. Und er will das über HTML oder php oder was auch immer lösen. Und nicht über seine Einstellungen. Das hat ja keine Auswirkungen auf die anderen.
 
Ja das hab ich mir ja auch überlegt und prinzipiell macht diese php Datei das ja auch, aber das Problem ist dass diese Dateien auf einem ANDEREN Server liegen (wo ich keinen Schreibzugriff habe).

Mit dem PHP Script wird die Datei nun eben zuerst über MEINEN Server zwischengespeichert, dann wird der header verändert und dann an den eigentlichen Empfänger weitergeleitet, aber das ist sehr unwirtschaftlich ;)

Gibt es wirklich GAR KEINE Möglichkeit das zu tun, wenn die Files extern sind?



Edit: Jo, eigentlich wollt ich des scho vor 3 Wochen oder so Posten, aber hier ne mögliche Lösung. Funktioniert mit IE, Mozilla, Opera, Firefox, vermutilch auch mit anderen wie Safari. Wenn die Files net auf dem eigenen Server liegen werden sie erst auf diesen Zwischengebuffert (resultiert also in doppeltem Traffic, aber für zB Gebrauch in einem Intranet äußerst brauchbar).

Code:
<?
// downloading a file use http://somewhere.com/download.php?filename=name of file

$filename = $_GET['file'];
if(!$filename){ die("ERROR: No filename specified. Please try again."); }
else {

// fix for IE catching or PHP bug issue
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
// browser must download file from server instead of cache

// force download dialog

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
	

// use the Content-Disposition header to supply a recommended filename and
// force the browser to display the save dialog.
header("Content-Disposition: attachment; filename=\"".substr(strrchr(rawurldecode($filename),"/"),1)."\";");
header("Content-Transfer-Encoding: binary");
//die(substr(strrchr(rawurldecode($filename),"/"),1));
//$root_path = "\\\\192.168.1.65\\";

//$myfile = $root_path . $filename;
$myfile = $filename;

header("Content-Length: ".filesize($myfile));
readfile($myfile);

exit();
}

?>
 
Zurück
Oben