Condizioni di notifica
Questo evento viene notificato all'applicazione quando una Traylet o un campo multi upload effettua l'upload di un file dal client.
Utilizzo consigliato
La routine di gestione di questo evento deve gestire il file arrivato dalla Traylet, ad esempio salvandolo in un BLOB del database.
Argomenti
Command | Comando arrivato dalla Traylet tramite query string. Normalmente contiene l'ID dell'oggetto TrayletFile in modo da poterlo recuperare dal TrayletManager. |
File Name | Nome del file come era salvato nell'hard disk del client. |
Size | Dimensione in byte del file. |
Mime Type | Tipo MIME del file. |
Save To | E' un parametro di input/output che contiene il percorso completo del file sul server, in modo da poterlo leggere o utilizzare. Se si imposta questo parametro a Empty String il file viene poi cancellato, se lo si cambia il file verrà spostato nella nuova posizione. |
Form | Videata dalla quale è stato inviato il file. |
Panel | Pannello dal quale è stato inviato il file. |
Field | Indice del campo dal quale è stato inviato il file. |
Note
-
Questo evento viene notificato anche dalla Shell dopo l'utilizzo delle funzioni TakePicture e RecStop.
In questi casi se l'applicazione è Offline il parametro SaveTo contiene la fotografia o la registrazione come BLOB, e può essere caricata sul database locale con la funzione LoadBlobFile. - Il parametro Form è stato introdotto nella versione 8.5 per i campi multi upload.
- I parametri Panel e Field sono stati introdotti nella versione 19.0 per i campi multi upload.
- In versione 21.5 l'upload di file da sessioni non autenticate è stato bloccato; il caso è stato gestito nella release successiva (vedi nota seguente). Per permettere l'upload da shell nativa o altre applicazioni raccomandiamo di aggiornare la versione.
- A partire dalla versione 22.0 se la sessione non è autenticata (ovvero il POST dei file viene eseguito da un'applicazione di terze parti o una applicazione offline sviluppata con Instant Developer) ed il file non viene spostato cambiando il valore del parametro SaveTo il file viene automaticamente rimosso dal sistema. Questo perché non è sicuro lasciare nella cartella TEMP file caricati da app di terze parti che il programmatore non ha gestito tramite la copia o spostamento del file.
Esempio di codice
// ***********************************
// Fired when a FILE has been uploaded
// ***********************************
event TrayletServer.OnFileUploaded(
string Command // Command associated with this file
string FileName // Client File Name
int Size // Size of the file
string MimeType // Mime Type
inout string SaveTo // Select file location
)
{
TrayletFile tf = null // Il file caricato
//
tf := this.TLManager.GetFile(Command)
//
// Apro il recordset per il BLOB
for each row
{
select
ContenutoFile := Contenuto
IDFile := ID
ContenutoPresenteFile := ContenutoPresente
from
Files // Master Table
where
ID = ToInteger(tf.FileID)
//
record File
string Contenuto // Il vero e proprio file!
int ID //
int ContenutoPresente // Vero se il file è stato caricato
//
File.ContenutoPresente := True
File.Contenuto := LoadBlobFile(SaveTo)
}
//
// Non voglio salvarlo!
SaveTo := Empty String
}
// Fired when a FILE has been uploaded
// ***********************************
event TrayletServer.OnFileUploaded(
string Command // Command associated with this file
string FileName // Client File Name
int Size // Size of the file
string MimeType // Mime Type
inout string SaveTo // Select file location
)
{
TrayletFile tf = null // Il file caricato
//
tf := this.TLManager.GetFile(Command)
//
// Apro il recordset per il BLOB
for each row
{
select
ContenutoFile := Contenuto
IDFile := ID
ContenutoPresenteFile := ContenutoPresente
from
Files // Master Table
where
ID = ToInteger(tf.FileID)
//
record File
string Contenuto // Il vero e proprio file!
int ID //
int ContenutoPresente // Vero se il file è stato caricato
//
File.ContenutoPresente := True
File.Contenuto := LoadBlobFile(SaveTo)
}
//
// Non voglio salvarlo!
SaveTo := Empty String
}
Esempio on line
In questo esempio l'evento OnFileUploaded viene utilizzato per salvare in un BLOB i file in arrivo dalla Traylet.
Ultima modifica: 09/12/2022 / Validità: da 6.6.2750