- Beim Aufruf der Seite werden fehlende Dateien in die Datenbank eingetragen und mit einem Hashwert sowie einer Checksumme versehen. Der Hashwert dient als Schlüssel, das heißt der Download-Link bekommt lediglich den Hashwert übergeben und sucht sich die dazu passende Datei aus der Datenbank. Zudem ist der Hashwert ein UNIQUE KEY in der Datenbank. Er setzt sich zusammen aus section_id, Dateiname und Pfad. Wichtig: Es ist theoretisch denkbar, daß sich aus unterschiedlichen Daten der gleiche Hashwert ergibt. Dann würde das beschriebene Verfahren zu einem Fehler führen (in diesem Fall könnte man nur die erste Datei herunterladen, die den gleichen Hashwert hat). Das ist aber ziemlich unwahrscheinlich. Trotzdem mal im Hinterkopf behalten.
- Es gibt bereits einen Download-Link und beim Download wird auch schon der Zähler hochgesetzt.
Was noch nicht klappt, ist der Download an sich. Das liegt daran, daß zu dem Zeitpunkt bereits ein Header gesendet wurde, weshalb die resultierende Datei halb HTML halb Binärdaten beinhaltet. Hierfür gibt es zwei Lösungsansätze:
1. Wie die "alte" Download-Funktion: Aufruf einer neuen Seite und per META-Refresh die eigentliche Datei senden.
2. Wie wbProfiles Download per AJAX (erfordert dann aber aktiviertes JavaScript).
Ich finde beides blöd Ich schau mal, ob es noch einen dritten Weg gibt.
Zu den Icons: Es gibt ein Standard-Icon und ein paar spezialisierte, z.B. wie im Bild zu sehen für JPG. Man kann das über die CSS-Datei erweitern.