Datei-Uploads konfigurieren
Wenn Sie im Webbenutzerschnittstellen-Framework ein Feld für den Upload von Dateien erstellen möchten, verwenden Sie das Datei-Upload-Widget, das eine Erweiterung des textfield-Steuerelements in Ext JS ist.
In der folgenden Grafik ist ein Beispiel für ein Steuerelement zum Hochladen von Dateien mit Ext JS (Steuerelement Attach Photo) abgebildet. In einem Web-Browser wird das Eingabefeld als Datei verwendet. In der folgenden Grafik ist ein Textfeld mit der Schaltfläche Browse abgebildet. Wenn Sie auf Browse klicken, wird ein Dialogfenster für die Dateiauswahl geöffnet. Das Dialogfenster richtet sich nach dem jeweiligen Betriebssystem und kann nicht angepasst werden.

In der Datei yfs.properties müssen Sie außerdem die folgenden Eigenschaften anpassen, um den Upload von Dateien zu konfigurieren.
Verwenden Sie die Eigenschaften sc.file.upload.maxfilesize und sc.file.upload.maxfilesize.Tabellenname, um die Größe der Dateien anzugeben, die hochgeladen werden können.
Geben Sie mit den Eigenschaften sc.file.upload.allowedfiletypes und sc.file.upload.allowedfiletypes.Tabellenname den Typ der Dateien an, die hochgeladen werden können.
- Mit der Eigenschaft sc.file.upload.dir geben Sie ein Verzeichnis an, in dem die hochgeladenen Dateien temporär gespeichert werden.
- Mit der Eigenschaft sc.file.upload.type wird bestimmt, wann die Datei auf den Server hochgeladen wird.
{{{
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
}}}- Es erfolgt eine Dateiprüfung nach Typ. Gültigkeitsprüfungen erfolgen außerdem serverseitig nach Name und Dateityp. Eine Größenüberprüfung ist im Browser nicht möglich.
- Die Dateien befinden sich in einem Unterverzeichnis des temporären Verzeichnisses, das in der Eigenschaft sc.file.upload.dir in der Datei yfs.properties (
{sc.file.upload.dir}/{App_Server_Name}/{userID of the user uploading the files}/{session ID of the session which is uploading the files}) angegeben ist. Die Werte fürApp_Server_Name,userIDundJsessionIDwerden von allen Sonderzeichen entfernt. - Der interne Datenwert des Datei-Upload-Widgets (FileUploadField)
wird in
SCFile:<Element_ID>geändert. Zum Beispiel:{User : { UserId : "user1", attachFile : "SCFile:ext-comp-1037" } }
- Nachdem die Dateien erfolgreich im Datenstrom auf den Server übertragen wurden, wird das FileAttachments-Element mit den Dateiinformationen (z. B. eindeutige Datei-ID, Speicherort der Datei und Widget-ID) an das Datenobjekt der Anzeige angehängt, das beim Hochladen verwendet wird. Anhand dieser Eingabe erfolgt der eigentliche API-Aufruf zum Senden der Dateiinformationen an die Datenbank.
Im folgenden Beispiel wird die Änderung eines einfachen Datenmodells nach dem Anhängen der Informationen verdeutlicht:
{User : { UserId : "user1", attachFile : "user1_1267599880675_1" } FileAttachments : { FileAttachment : { file_id : "user1_1267599880675_1", file_path : "att2.bmp", Element_ID : "ext-comp-1037" } } }
- Beim horizontalen Senden von Dateien an den Server ist ein Fehler aufgetreten.
- Beim Versuch, im Zuge des API-Aufrufs Dateien in der Datenbank als persistent zu definieren (d. h., nachdem die Dateien erfolgreich auf dem Server gespeichert wurden), ist eine Ausnahme aufgetreten.
Wenn Sie Dateien im temporären Verzeichnis auf dem Server löschen, werden Ereignisse aufgerufen.
Dateien sicher löschen
Die ISecureFileDelete-Schnittstelle ermöglicht ein sicheres Löschen von Dateien, die in das temporäre Serververzeichnis hochgeladen werden. Integrieren Sie die ISecureFileDelete-Schnittstelle mithilfe der folgenden Eigenschaft in der Datei yfs.properties:
sc.secure.file.delete.impl=/*
Stellen Sie sicher, dass sc.secure.file.delete.impl ein vollständig qualifizierter Pfad zur Java™-Klassenimplementierung ISecureFileDelete ist. Die Definition der ISecureFileDelete-Schnittstelle enthält eine Methode, die implementiert werden muss:
+
/**
* @param file is an existing file which has to be deleted
* from temporary location of the server. This method
* implementation gets called only when file exists
* on the server location.
* @return true if the file delete is successful, false otherwise.
*/
boolean deleteFile(File file);Das sichere Löschen von Dateien ist standardmäßig verfügbar. Eine Standardimplementierung für das sichere Löschen von Dateien ist bereits integriert. Die Standardimplementierungsklasse lautet com.sterlingcommerce.woodstock.util.frame.file.impl.PLTSecureFileDeleteImpl. Wenn die Plug-in-Implementierungsklasse ungültig oder nicht zugänglich ist, wird die Datei mit der Java-API zum Löschen von Dateien gelöscht.