Speichern von Daten von Drupal zur lokalen Systemdatei
-
20-09-2019 - |
Frage
Ich habe ein Drupal -Modul erstellt, in dem einige Berichterstattungsdaten angezeigt werden. Ich möchte eine Option einfügen, mit der ein Benutzer die Seite angezeigt wird, um Daten als TXT- oder CSV -Datei in ihrem lokalen System zu speichern, aber ich stehe auf folgende Probleme:
- So geben Sie ein lokales Verzeichnis an, um auf zu speichern.
- So speichern Sie die Daten tatsächlich im Verzeichnis.
Ich habe die Drupal -API -Dokumentation für Formulare durchlesen. Es gibt einen "Datei" Eingabetyp, der es einem Benutzer ermöglicht, sein System zu durchsuchen und einen Speicherort auszuwählen, von dem er hochladen kann. Ich habe mir auch die Funktion file_save_data () angesehen, aber es scheint, dass Daten nur im Drupal -Site -Verzeichnis gespeichert werden.
Jede Hilfe wäre sehr geschätzt.
Lösung
So geben Sie ein lokales Verzeichnis an, um auf zu speichern.
Du kannst nicht. Der Browser des Benutzers speichert Ihre Dateien entweder im Standard -Download -Verzeichnis des Browsers oder fordert den Benutzer auf, einen Speicherort auszuwählen. Wenn eine Website auswählen kann, bei der eine Datei gespeichert wird, ist ein wichtiges Sicherheitsloch - sie könnten Desktop -Verknüpfungen zu Viren, Startelemente usw. hinzufügen, usw.
Andere Tipps
Das hat für mich funktioniert:
$file = file_save_data($data, $dest, $replace = FILE_EXISTS_RENAME);
drupal_set_header($header = "Content-type: text");
drupal_set_header($header = "Content-Disposition: attachment; filename=$file.xls");
readfile($file);
die();
Der Die () muss dort hineingehen, sonst wird die Seite HTML an die Datei beigefügt.