PHP Upload: Im CodeCharge
Es gab Zeiten, da war ich wirklich extrem sauer. Immer wieder die gleichen Probleme. CodeCharge ist zwar eine feine Sache aber in machen Dingen leider etwas begrenzt und stur. So blieb mir auch lange Zeit eine einigermaßen vernünftige Möglichkeit des Dateiuploads verwehrt. Aber mit ein wenig Kenntnis von PHP ist doch recht einfach ein eigenes Modul dafür zu basteln. Ich gebe zu, die Lösung ist nicht perfekt, für meine Bedürfnisse reicht sie aber völlig aus und flexibel ist sie außerdem.
Als erstes müssen wir einige Vorbereitungen im CodeCharge treffen, ohne die unsere Upload Script leider nicht funktioniert. Ich habe versucht das Script direkt im CodeCharge unterzubringen, was aber nicht geglückt ist. Für meine Zwecke verwende ich als Startpunkt für den Upload ein normales Record Formular, jedes beliebige andere tut es aber auch. Hier legt man sich ein zusätzliches Feld und vergibt dafür einen vernünftigen Namen, in meinem Beispiel nenne ich es bei den Feldeigenschaften einfach “upload”. Das Feld sollte vom Typ “Label” sein und bei den Eigenschaften muss unbedingt das Feld “HTML” angewählt sein, da wir das Feld noch manipulieren müssen.
Als nächsten rufen wir die Tabelleneigenschaften auf. Im Bereich “Ereignisse” geben wir unter “Before Show Update” folgendes ein:
$fldupload = "upload ?";
Dies generiert für das “upload” Feld einen stinknormalen Link zur Datei upload.php und hängt als Option die id an, welche aus der Variable $fldpic_id kommt. Wichtig ist, dass man unbedingt auf die Schreibweise achtet. Der Wert der Variable $fldupload (entspricht dem Feld “upload”) ist hier ein String und muss somit in Anführungszeichen gesetzt werden. Da aber im String keine neuen Anführungszeichen vorkommen sollten aber für den Link benötigt werden, müssen die Anführungszeichen mit einem maskiert werden. Auch das abschließende Semikolon bitte nicht vergessen
Man kann im URL auch andere Variablen übergeben aber im Moment soll das erst mal reichen. Die Seite dann einfach generieren und auf dem Server hochladen.