Condizioni di notifica
Questo evento viene notificato dal pannello quando sta per essere scaricato un blob dal pannello. Questo può avvenire per le seguenti ragioni:
- L'utente preme il pulsante Visualizza nella toolbar del campo di pannello.
Utilizzo consigliato
L'evento di On Download Blob può essere utilizzato, ad esempio, per controllare se l'utente ha il permesso di scaricare il blob, oppure per registrare che quel blob è stato visualizzato.
Può anche essere utilizzato per modificare il modo con cui il blob viene scaricato, ad esempio è possibile scaricare il blob sul file system del server e poi ridirigere il browser su di esso.
Argomenti
Cancel | Se impostato a True interrompe il normale scaricamento del blob. Può essere utile anche per sostituire la normale procedura di scaricamento con una personalizzata. |
Column | E' un numero intero che indica da quale campo del pannello è stato richiesto lo scaricamento del blob. Deve essere confrontata con la funzione Me dei campi di pannello. |
Size | E' un numero intero che rappresenta la dimensione in byte del blob da scaricare. |
Extension | E' una stringa che contiene l'estensione del file da scaricare. E' possibile modificare questo parametro per indicare al browser un diverso tipo di contenuto. |
Inline | Normalmente il blob viene visualizzato in una nuova finestra browser. Se questo parametro viene impostato a False, la nuova finestra browser viene informata che il blob dovrebbe essere scaricato e salvato come file sul disco locale del client. Il valore predefinito è False per i file con estensione ZIP, RAR o BIN, True in tutti gli altri casi. |
Filename | E' la stringa che rappresenta il nome del file con cui salvare il blob, nel caso in cui il parametro Inline sia True. Per default è "Documento", è conveniente cambiarlo per agevolare l'utente nel riconoscimento del file. Non deve contenere l'estesione che invece è rappresentata dal parametro Extension. |
Mime type | Parametro introdotto a partire dalla versione 7.5 di Instant Developer. E' la stringa che rappresenta il mime type associato al file. Tale valore viene fornito al browser come Content Type e viene normalmente utilizzato da quest'ultimo per decidere con quale applicazione occorre aprire il file. E' possibile cambiarlo qualora si desideri forzare il browser ad aprire il file con un'applicazione specifica. |
Esempio di codice
// **********************************************************
// Fired when a blob is downloaded in a web-based application
// **********************************************************
event Categorie.Categorie.OnDownloadBlob(
inout boolean Cancel // When set to TRUE, abort operation
int Column //
int Size // Size of the new blob (-1 if deleted)
inout string Extension // File extension of the new blob
inout boolean Inline //
inout string FileName // File name of the new blob when saved in a file
)
{
string FileName = "" // Nome del file salvato sul server
//
// Non procedo con lo scaricamento standard
Cancel := True
//
// Seleziono il blob da scaricare in un ciclo for-each
for each row
{
select
ImmagineCategorie := Immagine
from
Categorie // Master Table
where
Idcategoria = Categorie.IdcategoriaCategorie
//
record Categorie
string Immagine // Questo contiene il blob
//
// Per poi poter utilizzare la funzione Save Blob File.
// Il file viene salvato nella sottodirectory TEMP
// della web application. Il nome del file è il nome
// della categoria, l'estensione dipende dal file
// contenuto nel blob.
FileName := SaveBlobFile(Categorie.Immagine, Path() +c C/temp, Categorie.
NomeCategoriaCategorie)
}
//
// Infine dico alla nuova finestra browser di visualizzare
// il file appena salvato.
EsempiAM.Redirect(Mid(FileName, Length(Path()) + C2, ??))
}
// Fired when a blob is downloaded in a web-based application
// **********************************************************
event Categorie.Categorie.OnDownloadBlob(
inout boolean Cancel // When set to TRUE, abort operation
int Column //
int Size // Size of the new blob (-1 if deleted)
inout string Extension // File extension of the new blob
inout boolean Inline //
inout string FileName // File name of the new blob when saved in a file
)
{
string FileName = "" // Nome del file salvato sul server
//
// Non procedo con lo scaricamento standard
Cancel := True
//
// Seleziono il blob da scaricare in un ciclo for-each
for each row
{
select
ImmagineCategorie := Immagine
from
Categorie // Master Table
where
Idcategoria = Categorie.IdcategoriaCategorie
//
record Categorie
string Immagine // Questo contiene il blob
//
// Per poi poter utilizzare la funzione Save Blob File.
// Il file viene salvato nella sottodirectory TEMP
// della web application. Il nome del file è il nome
// della categoria, l'estensione dipende dal file
// contenuto nel blob.
FileName := SaveBlobFile(Categorie.Immagine, Path() +c C/temp, Categorie.
NomeCategoriaCategorie)
}
//
// Infine dico alla nuova finestra browser di visualizzare
// il file appena salvato.
EsempiAM.Redirect(Mid(FileName, Length(Path()) + C2, ??))
}
- Attenzione: A causa di un bug di Internet Explorer, se si effettua il download di un blob dall'interno di una finestra modale e prima di aprire il browser che contiene l'applicazione era già stato aperto un altro browser, è possibile che la nuova finestra browser destinata a contenere il blob non effettui lo scaricamento. In realtà lo scaricamento viene eseguito dall'altro browser, che non appartenendo alla stessa sessione, non ha il diritto di effettuare tale operazione.
- L'evento non scatta in caso di scaricamento automatico, cioè quanto la dimensione del blob è minore del Max Auto Download Size del campo di pannello.
-
Il parametro Mime Type viene calcolato automaticamente dal server a partire dall'estensione del file. In applicazioni C# viene calcolato cercando nel registro di windows la chiave:
HKEY_CLASSES_ROOT\.[Estensione]
Se tale chiave esiste e contiene un valore di tipo stringa avente nome Content Type tale valore viene fornito all'evento. Qualora tale chiave non venga trovata o non esista il valore di tipo stringa il parametro verrà fornito come stringa vuota.
In applicazioni Java il mime type viene calcolato leggendo il file WEB.XML presente nella cartella CONF di Tomcat. I nodi del file xml che descrivono il mime type sono scritti nel modo seguente:<mime-mapping> <extension>[Estensione]</extension> <mime-type>[MimeType]</mime-type> </mime-mapping>
- Qualora il calcolo non abbia avuto successo o il parametro MimeType venga svuotato nell'evento, questo non verrà inviato al browser.
- Se, all'interno dell'evento, viene cambiato il valore del parametro Estensione, il valore del parametro Mime Type verrà automaticamente ricalcolato dal server. Qualora, oltre all'estensione, venva modificato anche il valore del parametro Mime Type il ricalcolo non avrà luogo.
Ultima modifica: 25/10/2016 / Validità: da 6.5.2680