PHP Fopen() -- Speichern unter Dialog

scue

Cadet 4th Year
Registriert
Aug. 2008
Beiträge
68
Hallo,

ich erstelle derzeit mit fopen und dem parameter w eine Datei. Diese wird bisher nur auf dem Server gespeichert. ich möchte aber das ein Speichern unter Dialog erscheint und ich selber auswählen kann wo ich diese datei speichere. gibt es dafür einen parameter?

vg
scue
 
Dh. du willst einen Download?
Einfach mit echo ausgeben (statt Fopen) und mit nem entsprechenden Header versehen:

header('Content-type: text/plain'); //Hier ggf passenden Content-Type
header('Content-Disposition: attachment; filename="download.txt"');
 
Also nach ein bisschen rumprobieren und googeln bin cih jetzt bei folgendem:

PHP:
<?
$list[] = array('sdf', '23');
$list[] = array('fds', '32');

$filename = "datenbankoverview.csv";

$fh = fopen($path.$filename,"w");
foreach ($list as $fields) {
    fputcsv($fh, $fields, ";");
}

fwrite($fh,utf8_decode( $list ) );
fclose($fh);
$fp = fopen($path.$filename,"r");
if(!$fp){                
  //echo "Konnte Datei nicht erstellen! <br/>";
} else{
  #echo fread($fp, 250);
  $application="text/csv";
  header( "Content-Type: $application" ); 
  header( "Content-Disposition: attachment; filename=$filename"); 
  header( "Content-Description: csv File" ); 
  header( "Pragma: no-cache" ); 
  header( "Expires: 0" ); 
}  
$check = @fpassthru($fp);  
?>

klappt auch alles recht gut, nur die Ausgabe ist für mich unerklärlich:
HTML:
sdf	23
fds	32
Array

ich verstehe ja, die ersten beidne zeilen, genau so sollen sie ja auch sein. aber wieso steht da was von array?

gruß

edit:
so eine ergänzung hätte ich noch. ich habe das jetzt alles immer auf einem xampp server unter windows probiert, es soll aber später auf einer linux maschine laufen. sprich man muss den schreibrechten besondere beachtung geben. kann mir vlt doch jmd sagen wie ich die datei erstellen kann, ohne sie zwischenzuspeichern? weil jetzt habe ich bei linux schreibrechte für "den rest der welt" geben müssen, damit das skript funktioniert. und das wollte ich eigentlich nicht.
 
Zuletzt bearbeitet: (ergänzung)
Das "Array" in der Ausgabe kommt von folgender Zeile:
PHP:
fwrite($fh,utf8_decode( $list ) );
fwrite erwartet als zweiten Parameter einen String und $list ist ein Array. Und immer wenn man versucht, ein Array als String auszugeben, wird einfach "Array" ausgegeben. (Eigentlich passiert das schon bei utf_decode, allerdings verstehe ich den Sinn von utf_decode hier nicht ganz, deswegen hab ichs einfach mal ignoriert...)
 
Zuletzt bearbeitet:
Zurück
Oben