Datei-Upload

Der Datei-Upload, der in Zusammenarbeit mit der Universität Göttingen implementiert wurde, soll es Studenten ermöglichen Abgaben vollständig über die Studenten-Schnittstelle (FN2SSS) abwickeln zu können. Eine erste Iteration wurde im Februar 2019 abgeschlossen und ermöglicht den eigentlichen Upload von Dokumenten, sowie deren rudimentäre Verwaltung durch FN2SSS und das PA-Modul.

Gesteuert wird der Datei-Upload letztlich durch das Feld hochladen in der Tabelle teilprf, das im PO-Modul für jede Teilprüfung gesetzt werden kann.

Nötige Version, Felder und Einträge

Der Datei-Upload wird in FN2WEB ab Version 2.04.02.000 und in den fn2Modulen ab dem Release vom 18.02.2019 (Version 2.0.6988.25824) unterstützt.

Seitens der Datenbank werden die Tabellen DATEI_UPLOAD und PRFSTD_ENDGUELTIG benötigt. Zudem werden die Spalten END_TIMESTAMP und ENDGUELTIG in der Tabelle PRFSTD und die Spalte HOCHLADEN in der Tabelle TEILPRF erwartet. Falls diese nicht vorhanden sind, bitte nochmal die veröffentlichten SQL-Skripte aus dem Zeitraum November 2018 bis Februar 2019 durchgehen.

Folgend werden die nötigen Konfigurationsparameter mit beispielhaften Werten aufgelistet. Auf deren Bedeutung wird im Abschnitt Konfiguration näher eingegangen.

context.xml

In die tomcat context.xml müssen in dem Abschnitt für allgemeine Parameter

<Parameter description="Pfad fuer Datei-Uploads" name="DATEIUPLOADPATH" value="${catalina.base}/temp/uploads/"/>

und in dem Abschnitt für FN2SSS

<!-- Datei-Upload -->
<Parameter description="Valide MIME-Typen fuer den FileUpload in der SSS, mit Doppelpunkt trennen" name="FN2SSS.UPLOAD_MIME" value="application/pdf"/>
<Parameter description="Suffix fuer den Pfad von FileUploads in der SSS" name="FN2SSS.UPLOAD_SUFFIX" value="SSS/"/>
<!-- Datei-Upload -->

ergänzt werden.

FN2SSS/WEB-INF/web.xml

In der web.xml von FN2SSS werden die <init-param>

<init-param>
<description>Maximalgröße für POST-Requests über die SSS in byte</description>
<param-name>REQUEST_SIZE_LIMIT</param-name>
<param-value>51200</param-value>
</init-param>
<init-param>
<description>Maximalgröße für einzelne, hochgeladene Dateien in byte</description>
<param-name>UPLOAD_MAX_FILE_SIZE</param-name>
<param-value>104857600</param-value>
</init-param>

erwartet.

FN2XML/WEB-INF/web.xml

Die web.xml von FN2XML sollte um den Eintrag

<load-on-startup>1</load-on-startup>

innerhalb des XML-Tags <servlet> ergänzt werden (auf gleicher Ebene wie <servlet-class> und <servlet-name>).

Konfiguration

Viele Aspekte des Datei-Uploads lassen sich, meist über die im vorhergehenden Abschnitt vorgestellten Parameter, konfigurieren.

Speicherort

FlexNow ist kein Datei-Verwaltungssystem.

Der Datei-Upload ist lediglich zum logischen Handling und Weiterreichen von Dateien an ein dediziertes System gedacht, wobei die für uns interessanten Daten in der Datenbank gespeichert werden und zusätzlich Funktionen von uns bereit gestellt werden.

Der Speicherort setzt sich aus

DATEIUPLOADPATH + FN2SSS.UPLOAD_SUFFIX

zusammen. Zum Beispiel würde sich mit DATEIUPLOADPATH=„${catalina.base}/temp/uploads/“ und FN2SSS.UPLOAD_SUFFIX=„SSS/“ der Pfad ${catalina.base}/temp/uploads/SSS/ ergeben. In den Parametern werden also Strings erwartet, die letztlich auf ein Verzeichnis deuten (bitte auf die '/' achten).

Beachtet werden muss, dass

das Verzeichnis vorhanden ist (es wird nicht erstellt)

der Nutzer, unter dem der Tomcat-Server läuft, dort Schreibrechte hat

MIME-Typ

Mit dem Parameter FN2SSS.UPLOAD_MIME werden für den Upload zulässige MIME-Typen nach RFC2046 hinterlegt. Wie schon in der Beschreibung erklärt, müssen die einzelnen Typen mit Doppelpunkten getrennt werden, z.B. würde ein value von

application/pdf:text/plain

für .pdf und .txt (und Ähnliche) stehen. Eine Liste mit den gängigsten MIME-Typen ist hier zu finden.

Java kennt von sich aus nur einige wenige Basis MIME-Typen.

Wenn „exotischere“ Typen gewünscht werden, bitten wir um Rücksprache um diese ggf. einfügen zu können. (z.B. zählen schon Word Documente (.doc/.docx) zu den Java-unbekannten Typen)

Begrenzung der Datei/Upload-Größe

Die maximale Datei- bzw. Uploadgröße ist über die Parameter UPLOAD_MAX_FILE_SIZE und REQUEST_SIZE_LIMIT einstellbar. Wie der Name schon sagt wird in UPLOAD_MAX_FILE_SIZE die max. Größe einzelner Dateien in Byte angegeben. REQUEST_SIZE_LIMIT begrenzt die Größe des kompletten Requests (auch für nicht-Uploads).

Ist für UPLOAD_MAX_FILE_SIZE ein valider Zahlenwert gesetzt, dann wird REQUEST_SIZE_LIMIT bei Uploads ignoriert.

Falls keiner der beiden Parameter gesetzt ist, wird für REQUEST_SIZE_LIMIT ein Default von 50 kB angenommen.

Die maximal Anzahl an hochladbaren Dateien wird in der Tabelle TEILPRF in der Spalte HOCHLADEN für jede Teilprüfung separat angegeben.

Optionaler Eintrag in context.xml

Optional kann das Intervall angegeben werden, in dem nach abgabefälligen Uploads gesucht wird.

<Parameter description="Intervall mit dem nach abgabefälligen Uploads gesucht wird in Sekunden" name="FN2SSS.DATEI_UPLOAD_CHECK_INTERVALL" value="10800"/>

Das Intervall hat einen Default-Wert von einer Stunde (wenn der Parameter nicht vorhanden ist) und einen Minimal-Wert von einer halben Stunde.

Download der Dateien in FN2LM

Die jeweils zugehörigen Prüfer können hochgeladene Dateien über den Menüpunkt „Arbeiten herunterladen“ in FN2LM zur Korrektur herunterladen. Dazu muss im Init-Parameter „NAV_CONFIG“ in der web.xml von FN2LM der Eintrag „abschlussarbeiten“ aus dem Value entfernt werden.

Klausur-Upload

Da der Klausur-Upload weitestgehend die gleiche Infrastruktur wie der Datei-Upload nutzt, können die zugehörigen Parameter leicht abgeleitet werden:

Die Parameter-Benamung bleibt gleich, es müssen lediglich die

Einträge in der in FN2SSS-web.xml statt dessen in die FN2LM-web.xml

Einträge in der context.xml statt dessen mit FN2LM beginnen

Selbstverständlich müssen die Werte sinnvoll gewählt werden, z.B. sollte FN2LM.UPLOAD_SUFFIX den Wert „LM/“ oder ähnlich haben.

Da für Klausur-Uploads eine Fächer/Prüfungsspezifische Begrenzung der Anzahl nur wenig Sinn macht, kann die maximale Anzahl der hochladbaren Dateien global in der FN2LM-web.xml mit dem Init-Parameter 'UPLOAD_LIMIT' eingestellt werden:

<init-param>
<description>Anzahl der max. Klausuren, die pro Prüfungszeitraum hoch geladen werden dürfen</description>
<param-name>UPLOAD_LIMIT</param-name>
<param-value>3</param-value>
</init-param>

Ist der Wert negativ, nicht vorhanden oder nicht als Zahl interpretierbar, können beliebig viele Uploads durchgeführt werden.

Verschlüsselung

Wenn gewünscht, können die hochgeladenen Klausuren zusätzlich verschlüsselt werden. Dazu muss in der FN2LM-web.xml ein Init-Parameter ENCRYPT_KLAUSUREN mit dem Wert true hinterlegt werden:

<init-param>
<description>Sollen hochgeladene Klausuren verschlüsselt werden? (true/false)</description>
<param-name>ENCRYPT_KLAUSUREN</param-name>
<param-value>true</param-value>
</init-param>

Das verwendete Verfahren kann ebenfalls über Init-Parameter gewählt werden.

Für die verwendete Transformation der Parameter CIPHER:

<init-param>
<description>Welche Transformation soll verwendet werden?</description>
<param-name>CIPHER</param-name>
<param-value>############</param-value>
</init-param>

Für den verwendeten Schlüssel der Parameter CIPHER_KEY:

<init-param>
<description>Verwendeter Schlüssel</description>
<param-name>CIPHER_KEY</param-name>
<param-value>############</param-value>
</init-param>

Valide Werte können hier entnommen werden (sind jedoch nicht alle implementiert, bei Bedarf bitte bei uns nachfragen).

Die Parameter sind alle optional. Wenn sie nicht vorhanden sind, werden folgende Defaults genutzt:

Parameter	Default-Wert	Effekt
ENCRYPT_KLAUSUREN	false	Klausuren werden nicht verschlüsselt
CIPHER	AES/CBC/PKCS5Padding	AES mit CBC und PKCS5-Padding
CIPHER_KEY	#########	Bitte bei Bedarf erfragen