Zum Inhalt springen

Attachment-Handling beim Formular

Erstellt am 24. Januar 2011 · Noch keine Antworten

Tags: Frage

mike_72 ·

Hallo Forum,
ich habe innerhalb einer eigenen Extension ein Bewerbungsformular, bei dem der User mehrere Dateien (hier PDF) hochladen kann, die später per Mail versendet werden. Das funkiotniert alles auch:

 if ($_FILES['formdata']['name']['lebenslauf']) {
$uploadedTempFile = t3lib_div::upload_to_tempfile($GLOBALS['HTTP_POST_FILES']['formdata']['tmp_name']['lebenslauf']); }

Damit steht mir die Datei im typo3temp Verzeichnis unter dem Namen "upload_temp_xxxxx" zur Verfügung. Beim Versand mit t3lib_htmlmail (addAttachment()) wird allerdings dieser kryptische Dateiname versendet, so dass ich die Datei lokal speichern und wieder als PDF in z.B. Lebenslaif-pdf umbenennen muss. Dann kann ich die Datei als PDF öffenen. Soweit gut.

Da der spätere Empfänger das aber so sicher nicht akzeptieren wird, benenne ich die Datei vor dem Versand einfach wieder in den ursprünglichen Namen incl. Dateiendung um und versende sie dann.

t3lib_div::upload_copy_move($tempName, $originalname);

Das funktioniert auch wunderbar.

Das Problem ist nun folgendes:
Da es sich hier um einen Lebenslauf in Form eines PDF´s handelt der versendet werden soll ist es naheliegend, dass fast jeder Bewerber "seinen" Lebenslauf als "Lebenslauf.pdf" hochlädt.
Jede Datei bekommt dann zwar einen temporären Namen, so dass sie immer einem User zugeordnet werden kann, aber der absolut unwahrscheinliche Zufall tritt ein, dass zwei Bewerber zur gleichen Zeit Ihren Lebenslauf.pdf hochladen und versenden. Dann kann es in diesem Augenblick doch dazu kommen, dass beim upload_copy_move sich die Dateien überschreiben und u.U. beiden Mails derselbe Lebenslauf angehängt wird.
Das wird sicher in der Praxis nie vorkommen, aber es könnte doch passieren.
Wie seht Ihr das?

Ich habe schon überlegt, pro User anhannd der fe_user->id ein eigenes Verzeichnis unterhalb typo3temp anzulegen und die Dateien dort zu speichern. Gibt es eine bessere Lösung?
Kann man vielleicht die Datei als upload_temp_xxx verschicken und einen anderen Namen mitgeben, damit der Empfänger das in seinem Mailclient richtig angezeigt bekommt? Mit der TYPO3 API habe ich irgendwie keine passende Lösung gefunden.

Für Anregungen, Tipps etc. wäre ich Euch dankbar.