Moin,
ich habe ein Script, in dem registrierte Benutzer Dateien herunterladen koennen. Nun moechte ich aber nicht, dass der Benutzer den wirklichen Dateinamen der Datei, die er gerade herunterlaed kennt. Gibt es eine Moeglichkeit die Datei zum Browser des Bnutzers zu streamen? Ich moechte naemlich, dass man sich jedes mal anmelden muss, um eine Datei herunterladen yu koennen. Wenn der Benutzer naemlich jetzt den richtigen Dateinamen auf dem Server kennen wuerde, dann koennte er die URL weitergeben und jeder koennte die Datei herunterladen.
Nun zu meiner zweiten Frage: Wie kann ich an eine Datei einige Daten wie Datum des Downloads usw. anhaengen. Diese Daten sind fuer den Benutzer nicht sofort
sichtbar und verhindern das Ausfuehren und Verwenden der Datei nicht. ist soetwas moeglich?
Vielen Dank schon jetzt fuer euere Hilfe,
PelzigesWaldtier
Seite 1 von 1
[php] Datei Signieherunterladen Und Signieren
Anzeige
#2
geschrieben 08. April 2005 - 20:43
Also wenn du eine Datei "streamen" willst, dann müsste das theoretisch so gehen.
Zuerst den passenden Header setzen
und dann eine Datei aufrufen bzw direkt ausgeben mit readfile.
Etwas komplexer könnte man es dann so machen wie einer in den Kommentaren der Hilfedatei vorschlägt:
Zuerst den passenden Header setzen
header('Content-Type: application/octet-stream');
und dann eine Datei aufrufen bzw direkt ausgeben mit readfile.
readfile('filename');
Etwas komplexer könnte man es dann so machen wie einer in den Kommentaren der Hilfedatei vorschlägt:
<?php header ("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header ("Content-Type: application/octet-stream"); header ("Content-Length: " . filesize($theFile)); header ("Content-Disposition: attachment; filename=$theFileName"); readfile($theFile); ?>
#3 _PelzigesWaldtier_
geschrieben 08. April 2005 - 22:56
Hallo,
Danke fuer die Antwort! Das geht schon soweit. Nur muss ich jetzt noch "Content-Type" anpassen. Dafuer nehme ich mime_content_type(). Allerdings wird immer entweder text/plain oder application/octet-stream zurueckgegeben.
Mein Code sieht gerade so aus:
Wie mache ich das richtig?
Gruesse,
PW
Danke fuer die Antwort! Das geht schon soweit. Nur muss ich jetzt noch "Content-Type" anpassen. Dafuer nehme ich mime_content_type(). Allerdings wird immer entweder text/plain oder application/octet-stream zurueckgegeben.
Mein Code sieht gerade so aus:
header ("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header ("Content-Type: ".mime_content_type('upload/'.$document['file_name'])); header ("Content-Length: " . filesize('upload/'.$document['file_name'])); header ("Content-Disposition: attachment; filename=".$document['file_display']); readfile('upload/'.$document['file_name']);
Wie mache ich das richtig?
Gruesse,
PW
#4
geschrieben 09. April 2005 - 08:49
Wahrscheinlich sind die Dateierweiterungen bei dir nicht eingetragen. Du kannst doch auch einfach selber eine Funktion schreiben die die Dateiendung überprüft.
#5
geschrieben 09. April 2005 - 16:56
oder gleich beim Hochladen den Datei Typ mitspeichern (z.b. image/jpg) und den Wert beim streamen schicken.
#6 _PelzigesWaldtier_
geschrieben 09. April 2005 - 20:41
Ok, danke! Ich habe mir ne Funktion geschrieben, die abhaengig von der Dateiendung nen MIME-Typen zurueckgibt. Die Datei wird nun korrekt runtergeladen und nun funktioniert alles wunderbar.
Nun habe ich nur noch meine zweite Frage. Wie kann ich an eine Datei Daten anhaengen, ohne sie zu beschaedigen (Fehler beim Oeffnen usw.)? Hat da jemand ne Idee?
Gruesse,
PW
Nun habe ich nur noch meine zweite Frage. Wie kann ich an eine Datei Daten anhaengen, ohne sie zu beschaedigen (Fehler beim Oeffnen usw.)? Hat da jemand ne Idee?
Gruesse,
PW
#7
geschrieben 09. April 2005 - 21:53
Hm, ich wüsste jetzt nicht wie man zusätzliche Informationen einer Datei hinzufügt. Wenn es sich um wenige Informationen handelt, würde ich vorschlagen diese gzipped in dem Dateinamen zu speichern.
#8 _PelzigesWaldtier_
geschrieben 10. April 2005 - 19:30
Den Dateinamen kann der Benutzer ja leicht aendern. Wenn der Benutzer die Daten aendern will, dann muss er es mutwillig tun. Aenderungen im Dateinamen koennen vom Benutzer ja auch zur besseren Uebersicht vorgenommen werden.
Ich will die Daten z.b. ans Ende der Datei anhaengen und dann eine Pruefsumme dieser zusaetzlichen Daten in der Datenbank speichern, um eine Manipulation feststellen zu koennen.
Btw, die Benutzer muessen eine Einverstaendnisserklaerung akzeptieren, in der diese auf diese Punkte hingewiesen wird. Macht euch also keine Sorgen um "der User will das aber nicht".
Danke.
PW
Ich will die Daten z.b. ans Ende der Datei anhaengen und dann eine Pruefsumme dieser zusaetzlichen Daten in der Datenbank speichern, um eine Manipulation feststellen zu koennen.
Btw, die Benutzer muessen eine Einverstaendnisserklaerung akzeptieren, in der diese auf diese Punkte hingewiesen wird. Macht euch also keine Sorgen um "der User will das aber nicht".
Danke.
PW
#9
geschrieben 10. April 2005 - 19:34
Wie wäre es wenn du die Dateien einfach ausserhalb des public-www Ordners (z.B. /var/www/htdocs) speicherst (z.B. /var/www/files)?
Einfach php die Dateien/Ordner zugänglich machen und dort die Files speichern. Somit kann man dann die Dateien nur noch per Skript downloaden.
Einfach php die Dateien/Ordner zugänglich machen und dort die Files speichern. Somit kann man dann die Dateien nur noch per Skript downloaden.
#10
geschrieben 10. April 2005 - 19:51
Wenn du einer Datei einen Kommentar anheften möchtest, geht das vielleicht mit einer ZIP Datei, solche unterstützen diese Funktion nämlich.
#11 _PelzigesWaldtier_
geschrieben 10. April 2005 - 20:38
Der Benutzer entpackt die Dateien und gibt sie weiter. Dann habe ich ne leere ZIP-Datei, die mir herzlich wenig bringt. Ich moechte die Infos direkt an die eigentliche Datei anbringen.
Thema verteilen:
Seite 1 von 1