Benutzer-Werkzeuge

Webseiten-Werkzeuge


fn2:datei-upload

Dies ist eine alte Version des Dokuments!


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.

In weiteren Iterationen soll die Benutzung für Studenten und durch das PA verfeinert werden, sowie das FN2LM um die Möglichkeit für Lehrende erweitert werden, hochgeladene Dokumente zu begutachten.

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"/>
  <!-- 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</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</description>
	<param-name>UPLOAD_MAX_FILE_SIZE</param-name>
	<param-value>104857600</param-value>
</init-param>
<init-param>
	<description>Suffix fuer den Pfad von FileUploads in der SSS</description>
	<param-name>UPLOAD_SUFFIX</param-name>
	<param-value>SSS/</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 bereits jetzt, 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 + UPLOAD_SUFFIX

zusammen, was mit den obrigen Beispielen zu dem Verzeichnis ${catalina.base}/temp/uploads/SSS/ führt. In den Parametern werden also Strings erwartet, die letztlich auf ein Verzeichnis deuten.

Beachtet werden muss, dass

  • das Verzeichnis vorhanden ist (es wird nicht erstellt)
  • der Nutzer, unter dem der Tomcat-Server läuft, dort Schreibrechte hat

Der UPLOAD_SUFFIX kann theoretisch für jedes Web-Modul in der jeweiligen web.xml festgelegt werden. Damit lässt sich, falls benötigt, mit geringem Aufand für jedes Modul ein eigener Upload-Ordner definieren.

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.

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.

Verschlüsselung

Wenn gewünscht, können die hochgeladenen Dateien 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 Algorithmus der Parameter CIPHER_ALGORITHM:

<init-param>
     <description>Welcher Algorithmus soll verwendet werden?</description>
     <param-name>CIPHER_ALGORITHM</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.

Die Parameter sind alle optional. Wenn sie nicht vorhanden sind, defaulten sie wie folgt:

Parameter Default-Wert Effekt
ENCRYPT_KLAUSUREN false Verschlüsselung deaktiviert
CIPHER AES/ECB/PKCS5Padding AES mit ECB und PKCS5-Padding
CIPHER_ALGORITHM AES Verschlüsselung via AES
CIPHER_KEY ######### Bitte bei Bedarf erfragen
fn2/datei-upload.1564140017.txt.gz · Zuletzt geändert: 2019/07/26 13:20 von christoph