Esplora file incorporabile
- Tipo non definito
Questo documento è il riferimento funzionale e tecnico per File Explorer di RestFrontage. È destinato a utenti, amministratori di Immersive e integratori.
Esplora ti permette di sfogliare cartelle e accedere ai file da:
- del database Immersive (
Media.Content) ; - un file gestito dal server (
Media.Handle) ; - un contenitore Azure Blob montato su una cartella Immersive (
Folder.VirtualFolderPath).
1. Accedi all'esplorazione
La pagina è disponibile dal server RestFrontage:
/Business/Resources/Explorer

1.1 Modalità predefinita multi-radice
Senza RootFolderIdentifier, l'Esploratore presenta tutte le cartelle Immersive che possiedi ParentIdentifier è nullo:
https://mon-serveur/Business/Resources/Explorer
Queste cartelle appaiono nell'area dei contenuti e nel Cartelle. L'ingresso Radice Breadcrumb ci permette di tornare a questa panoramica.
A RootFolderIdentifier Assente, nullo o negativo attiva questa modalità multi-radice.
1.2 Limita Explorer a un albero
Per presentare un solo file e i suoi discendenti:
https://mon-serveur/Business/Resources/Explorer?RootFolderIdentifier=131
Il server nega di navigare verso una cartella che non discende da questa radice.
1.3 Display chiosco
La modalità chiosco nasconde la consueta skin di RestFrontage:
https://mon-serveur/Business/Resources/Explorer?Render=Kiosk&RootFolderIdentifier=131

Valore Kiosk non è distinto dalla maiuscolo e minuscolo. Qualsiasi altro valore mantiene la disposizione usuale.
2. Comprendere e utilizzare l'interfaccia
L'interfaccia è composta da cinque aree:
- Barra di comando : Creare, modificare, cancellare e aggiornare in base alla configurazione e ai diritti dell'utente.
- Cartelle —L'albero Immersivo e Blob sul lato sinistro dei grandi schermi.
- Sentiero delle Bricie di Pane : Il percorso della cartella corrente e il pulsante freccia per tornare al genitore.
- Indice : Sottocartelle e file mappe.
- Stato : caricamento, possibile errore e pulsante per riprovare.


Per orientarsi:
- Seleziona una cartella nella vista ad albero.
- Seleziona una scheda cartella.
- selezionare una tappa del sentiero delle briciole;
- Usa il pulsante freccia Avanza raggiungere il genitore;
- Utilizzo Radice per tornare alla vista multi-root quando non viene imposta alcuna root.
La pagina standard configura DownloadOnClick: true : Cliccando su un file si chiama il callback di selezione e poi apre o scarica il file. Le immagini riconosciute sono visualizzate come miniature.
Su uno schermo di 720 px o meno, il pannello sinistro è piegato verso il basso. Il pulsante Cartelle la apre o la chiude. La barra dei comandi rimane su una singola riga e può scorrere orizzontalmente. A 480 px o meno, i controlli con un'icona diventano più compatti. Anche la griglia e le schede si adattano alla larghezza disponibile.
3. Riferimento completo dei parametri URL
| Parametro | Tipo | Richiesto | Predefinito | Descrizione |
|---|---|---|---|---|
RootFolderIdentifier |
Intero positivo | No | nessuna | Limita Esplora a una cartella Immersive e ai suoi discendenti. Senza un valore valido, abilita la modalità multi-radice. |
AllowedExtensions |
Catena ripetibile | No | tutti | Filtra i file visualizzati in base alla loro estensione. |
RelativePath |
Catena | No | nessuna | Il percorso iniziale da risolvere nell'albero Immersive e poi opzionalmente in un Blob. |
Render |
Catena | No | Disposizione normale | Valore Kiosk Abilita la disposizione del chiosco. |
Token |
Catena | Contesto specifico | Sessione attuale | Un token usato quando il chiamante non ha già una sessione Immersive valida. |
Un URL ne contiene solo uno
?. Tutti i parametri seguenti sono separati da&.
3.1 Estensioni del filtro
Il parametro può essere ripetuto:
https://mon-serveur/Business/Resources/Explorer?RootFolderIdentifier=131&AllowedExtensions=.jpg&AllowedExtensions=.png&AllowedExtensions=.pdf
Può anche contenere una lista separata da virgole:
AllowedExtensions=.jpg,.png,.pdf
Regole:
- Il caso viene ignorato.
- il punto iniziale è opzionale;
- i valori vuoti vengono ignorati;
- Se l'impostazione è assente o vuota, tutte le estensioni vengono visualizzate;
- il filtro si basa sul nome del file;
- Questo filtro è una regola di visualizzazione, non un permesso di sicurezza.
3.2 Risoluzione completa di RelativePath
RelativePath possono attraversare successivamente:
- Cartelle immersive, identificate in base alla loro proprietà
Name; - il percorso interno di un Blob, dalla prima cartella con un
VirtualFolderPath.
I segmenti sono separati da /.
Con RootFolderIdentifier
Il percorso inizia sotto la cartella target. Il nome radice non dovrebbe essere ripetuto.
Struttura ad albero:
Projets (Identifier=10)
└── Chantier A
└── MNM Blob (VirtualFolderPath configuré)
└── 06 PLANS VITRINES
└── SC01
URL:
https://mon-serveur/Business/Resources/Explorer?RootFolderIdentifier=10&RelativePath=Chantier%20A%2FMNM%20Blob%2F06%20PLANS%20VITRINES%2FSC01
Chantier A e MNM Blob vengono risolti in Immersive. 06 PLANS VITRINES/SC01 viene poi risolto nel Blob.
Se la radice target è essa stessa la cartella Blob, il percorso contiene solo i segmenti Blob:
https://mon-serveur/Business/Resources/Explorer?RootFolderIdentifier=15&RelativePath=06%20PLANS%20VITRINES%2FSC01
Senza RootFolderIdentifier
Il primo segmento deve essere il nome di una cartella Immersive senza un genitore. Questa cartella diventa la radice iniziale della risoluzione.
https://mon-serveur/Business/Resources/Explorer?RelativePath=MNM%20Blob%2F06%20PLANS%20VITRINES%2FSC01
In questo esempio, MNM Blob deve essere una cartella Immersive senza genitore. I segmenti rimanenti vengono risolti nel suo Blob.
Se più di una cartella root ha lo stesso nome, la cartella con la più piccola Identifier viene utilizzato. Pertanto, si consiglia di dare nomi unici alle cartelle radici utilizzate in un URL.
Regole del Percorso
- Utilizzo
/come separatore; - Non fornire un URL assoluto.
- Non usare segmenti
.oppure..; - codificare spazi e caratteri speciali nell'URL;
- I nomi delle cartelle immersive vengono confrontati in modo insensibile alla maiuscola.
- I nomi e i prefissi dei blob mantengono le regole di caso Azure Blob Storage.
- ogni segmento di una Cartella Immersiva deve corrispondere a un figlio diretto del segmento precedente;
- non appena si trova una cartella virtuale, tutti i segmenti rimanenti appartengono al Blob.
Si consiglia di costruire l'URL con URL e URLSearchParams :
const url = new URL("/Business/Resources/Explorer", window.location.origin);
url.searchParams.set("Render", "Kiosk");
url.searchParams.set("RootFolderIdentifier", "10");
url.searchParams.append("AllowedExtensions", ".pdf");
url.searchParams.append("AllowedExtensions", ".ifc");
url.searchParams.set(
"RelativePath",
"Chantier A/MNM Blob/06 PLANS VITRINES/SC01"
);
3.3 Esempio completo di URL
https://mon-serveur/Business/Resources/Explorer?Render=Kiosk&Token=<JETON>&RootFolderIdentifier=15&AllowedExtensions=.jpg&AllowedExtensions=.png&AllowedExtensions=.pdf&AllowedExtensions=.ifc&AllowedExtensions=.riv&RelativePath=sous-repertoire%2Fsous-repertoire-2
4. Autenticazione e sicurezza
La pagina e le API dell'Explorer sono protette dalla sicurezza globale di Immersive.
Sono supportati due contesti:
- Una sessione Immersive è già attiva.
- Un gettone viene passato con
Token=<JETON>, soprattutto in modalità chiosco.
Il componente passa automaticamente il token presente nell'URL della pagina:
- nell'intestazione
Authorization: Bearerle sue chiamate JSON; - negli URL media appartenenti allo stesso server.
Migliori pratiche:
- usa HTTPS;
- Produci URL che contengano un token lato server.
- Limita la durata e i diritti del token.
- Non mettere mai un vero token in un repository, documentazione, screenshot o log accessibile.
- Non usare
AllowedExtensionscome controllo degli accessi.
4.1 Diritti di gestione dei documenti
La modifica si basa sui permessi dell'oggetto sicuro Folder :
| Permesso | Valore della bandiera | Utilizzo nell'Explorer |
|---|---|---|
See |
1 |
Vedi il dossier. |
Read |
3 |
Leggi il contenuto. |
Modify |
5 |
Cambia nome e descrizione. |
Write |
11 |
Crea una sottocartella e, in una futura evoluzione, aggiungi i media. |
FullControl |
15 |
Elimina una cartella e amministra tutti i suoi diritti. |
I diritti predefiniti sono applicati a ciascuna cartella Immersive: Reading per Group Users organizzazione e pieno controllo sui suoi Administrators, gli amministratori globali dei server, gli amministratori di dominio e Cerebrate. Le cartelle esistenti prima di questo cambiamento possono essere regolarizzate dall'audit dei diritti predefiniti di RestFrontage.
EnableEditing non costituisce mai un'autorizzazione. Il server ricalcola le capacità restituite al componente, controlla l'apertura di ogni modale e poi ricontrolla la richiesta di registrazione.
Le cartelle blob rimangono in sola lettura. L'eliminazione di una cartella Immersive è negata purché contenga almeno una sottocartella o un media.
5. Montare un contenitore Azure Blob
Una cartella virtuale è una Folder Immersivo VirtualFolderPath contiene l'URL radice del contenitore:
https://monstockage.blob.core.windows.net/mon-conteneur
Prefissi separati da / sono presentati come sottocartelle:
06 PLANS VITRINES/SC01/plan-01.pdf
06 PLANS VITRINES/SC01/plan-02.pdf
06 PLANS VITRINES/SC02/plan-03.pdf
Termini di rilascio attuali:
- Il server RestFrontage deve essere in grado di raggiungere Azure.
- la lettura e l'enumerazione del contenitore devono essere accessibili in modo anonimo;
VirtualFolderPathDeve puntare alla radice del contenitore, non a un file.- Le ambientazioni successive
?, in particolare un SAS, non vengono conservati durante l'enumerazione; - Il tag Azure non è ancora supportato: un contenitore molto grande potrebbe richiedere ulteriori evoluzioni.
6. Integrazione in un iframe
<iframe
src="https://mon-serveur/Business/Resources/Explorer?Render=Kiosk&RootFolderIdentifier=15&AllowedExtensions=.pdf"
title="Documents du projet"
loading="lazy"
allow="fullscreen">
</iframe>
Se sandbox viene utilizzato, autorizza se necessario:
allow-scriptsper far funzionare l'Explorer;allow-same-originper il contesto di autenticazione;allow-downloadsper i download;allow-popupsper aprire i file in una nuova scheda.
Sia il CSP di RestFrontage che quello della pagina madre devono consentire l'integrazione.
7. Riferimento completo per l'integrazione JavaScript
7.1 Costruzione
L'Esploratore è distribuito come due file autonomi con i percorsi verso il server Rest attuale come segue:
/css/media-explorer.css
/js/media-explorer.js
Per la sola consulenza, non dipendono da css/site.css, né js/common.js, jQuery o Bootstrap. Il foglio di stile deve essere caricato sulla pagina e lo script deve essere caricato prima del codice che costruisce l'Explorer.
D'altra parte, la modalità modifica utilizza i modali di RestFrontage e il ShowModal, UpdateData, ShowProcessingModal, HideProcessingModal e showToast di js/common.js. Integrazione esterna che attiva EnableEditing devono quindi assumere anche la disposizione dei modali, Bootstrap e common.js, oppure fornire funzionalità compatibili.
const explorer = new MediaExplorer(hostElement, options);
await explorer.initialize();
hostElement deve essere un elemento HTML esistente. Il costruttore prepara il report; initialize() genera l'interfaccia e poi carica i dati.
Esempio completo:
<link rel="stylesheet" href="/css/site.css">
<link rel="stylesheet" href="/css/media-explorer.css">
<div id="MediaExplorerHost"></div>
<script src="/js/commons.js"></script>
<script src="/js/media-explorer.js"></script>
<script>
const explorer = new MediaExplorer(
document.getElementById("MediaExplorerHost"),
{
RootFolderIdentifier: 15,
CurrentFolderIdentifier: 15,
RelativePath: "06 PLANS VITRINES/SC01",
AllowedExtensions: [".pdf", ".ifc"],
ApiBaseUrl: "/api/Explorer",
DefaultFileIconUrl: "/Content/Common/file.svg",
DefaultFolderIconUrl: "/Content/Common/folder.svg",
DownloadOnClick: true,
EnableEditing: true,
ExtensionIconUrlBuilder: (extension, media) =>
extension ? `/Content/Common/${extension.substring(1)}.svg` : null,
MimeTypeIconUrlBuilder: (mimeType, media) =>
mimeType ? `/Content/Common/${mimeType.replace("/", "-")}.svg` : null,
Labels: {
Up: "Niveau supérieur"
},
OnFolderChanged: folder => console.log("Dossier", folder),
OnMediaClicked: media => console.log("Fichier", media),
OnMediaDoubleClicked: media => console.log("Double-clic", media),
OnError: error => console.error(error)
}
);
await explorer.initialize();
</script>
Per la visualizzazione sola, entrambi i file possono essere serviti direttamente da RestFrontage o copiati sugli asset dell'applicazione client. Se l'applicazione client e l'API RestFrontage non hanno la stessa origine, ApiBaseUrl deve essere un URL assoluto, e RestFrontage deve consentire quell'origine nella sua configurazione CORS.
7.2 Tutte le opzioni
| Opzione | Tipo | Predefinito | Descrizione |
|---|---|---|---|
RootFolderIdentifier |
number | null |
null |
Radice imposta. null Abilita la modalità multi-root. |
CurrentFolderIdentifier |
number | null |
null |
Inizialmente aperto in assenza di RelativePath. Deve appartenere alla radice imposta. |
RelativePath |
string | null |
null |
Percorso iniziale misto immersivo/blob. Si risolve una volta al caricamento iniziale. |
AllowedExtensions |
string[] |
[] |
Estensioni visibili. Un array vuoto permette tutto. |
ApiBaseUrl |
string |
"/api/Explorer" |
Prefisso di route API. |
DefaultFileIconUrl |
string |
"/Content/Common/file.svg" |
Un'icona generica usata per un file che non può essere anticipata o piegata. |
DefaultFolderIconUrl |
string |
"/Content/Common/folder.svg" |
Icona di cartella e albero. |
ExtensionIconUrlBuilder |
function | null |
null |
Costruisce un'icona da (extension, media). Restituisci un URL o null. |
MimeTypeIconUrlBuilder |
function | null |
null |
Costruisce un'icona da (mimeType, media). Restituisci un URL o null. |
DownloadOnClick |
boolean |
false |
Se true, un clic apre il file. Altrimenti, l'apertura predefinita viene doppiamente cliccata. |
EnableEditing |
boolean |
false |
Richiede la visualizzazione dei comandi di cartella autorizzati dal server. Non concede alcun diritto. |
Labels |
object |
Vedi sotto | Sovraccarico parziale dei testi dell'interfaccia. |
OnFolderChanged |
function | null |
null |
Riceve la cartella dopo aver navigato con successo. |
OnMediaClicked |
function | null |
null |
Riceve il media dopo un solo clic. |
OnMediaDoubleClicked |
function | null |
null |
Riceve i media al doppio clic quando DownloadOnClick vale false. |
OnError |
function | null |
null |
Riceve l'oggetto Error dopo che l'errore viene visualizzato nell'interfaccia. |
La pagina incorporata nel RestFrontage sovrascrive i seguenti parametri predefiniti:
DownloadOnClick: true;EnableEditing: true;ExtensionIconUrlBuildera/Content/Common/{extension}.svg;MimeTypeIconUrlBuildera/Content/Common/{mime-type}.svg.
7.3 Tutta la formulazione (Labels)
Labels è un sovraccarico parziale: vengono sostituite solo le chiavi fornite.
| Chiave | Predefinito | Posizione o situazione |
|---|---|---|
Folders |
"Dossiers" |
Il titolo del pannello sinistro e il testo del pulsante mobile che apriva questo pannello. |
Root |
"Racine" |
Il nome della radice sintetica della modalità multi-radice. |
Up |
"Remonter" |
L'etichetta accessibile e la descrizione del pulsante freccia genitore. Per sostituirlo, usa ad esempio Up: "Niveau supérieur". |
Loading |
"Chargement…" |
Barra di stato durante una query. |
EmptyFolder |
"Ce dossier est vide." |
Area di contenuto senza bambini o media. |
Folder |
"Dossier" |
Metadati visualizzati sotto una cartella. Questa chiave non controlla il titolo Cartelle. |
VirtualFolder |
"Dossier virtuel" |
Metadati visualizzati sotto una scheda cartella Blob. |
Virtual |
"Virtuel" |
Metadati aggiunti sotto un file da un Blob. |
CreateFolder |
"Nouveau dossier" |
Pulsante Crea nella cartella corrente. |
EditFolder |
"Modifier" |
Modifica pulsante della cartella corrente. |
DeleteFolder |
"Supprimer" |
Tasto cancella per la cartella corrente. |
Refresh |
"Rafraîchir" |
Pulsante per ricaricare la vista ad albero e la cartella corrente. |
EditingUnavailable |
"Les outils d’édition de l’Explorer ne sont pas disponibles sur cette page." |
Errore quando EnableEditing è attivo senza un quadro modale compatibile. |
Retry |
"Réessayer" |
Pulsante visualizzato dopo un errore recuperabile. |
TreeLoadError |
"Impossible de charger l’arborescence." |
Errore di rete o generico durante il caricamento dell'albero. |
FolderLoadError |
"Impossible de charger le contenu du dossier." |
Errore di rete o generico durante il caricamento di una cartella. |
UnauthorizedError |
"Votre session a expiré ou le jeton est invalide." |
Risposta HTTP 401. |
ForbiddenError |
"Vous n’avez pas accès à cette ressource." |
Risposta HTTP 403. |
NotFoundError |
"La ressource demandée est introuvable." |
Risposta HTTP 404. |
UnexpectedError |
"Une erreur inattendue est survenue." |
Errore senza messaggio utilizzabile. |
Esempio con tutte le chiavi:
Labels: {
Folders: "Documents",
Root: "Tous les espaces",
Up: "Niveau supérieur",
Loading: "Chargement en cours…",
EmptyFolder: "Aucun document disponible.",
Folder: "Répertoire",
VirtualFolder: "Répertoire distant",
Virtual: "Distant",
CreateFolder: "Créer un répertoire",
EditFolder: "Renommer",
DeleteFolder: "Effacer",
Refresh: "Actualiser",
EditingUnavailable: "L’édition n’est pas disponible dans cette intégration.",
Retry: "Recharger",
TreeLoadError: "L’arborescence ne peut pas être chargée.",
FolderLoadError: "Le contenu ne peut pas être chargé.",
UnauthorizedError: "Authentification requise.",
ForbiddenError: "Accès refusé.",
NotFoundError: "Élément introuvable.",
UnexpectedError: "Une erreur est survenue."
}
Le unità di grafica e dimensione della navigazione non sono configurabili da Labels nella versione attuale. La Chiave Up Tuttavia, configura il nome accessibile e la tooltip della freccia genitore.
7.4 Risoluzione delle icone
Per un supporto, l'ordine di risoluzione è:
- miniatura reale se
media.IsImageemedia.PreviewUrlvengono riempiti; - risultato di
ExtensionIconUrlBuilder(extension, media); - risultato di
MimeTypeIconUrlBuilder(media.ContentType, media); DefaultFileIconUrl.
Se l'immagine scelta non si carica, DefaultFileIconUrl viene provato. Se anche il fallimento fallisce, l'immagine viene nascosta. Uso delle cartelle DefaultFolderIconUrl e poi nascondere l'immagine se quell'URL fallisce.
L'estensione fornita al costruttore è normalizzata in minuscole e inizia con un punto, ad esempio .pdf.
7.5 Comportamento dei clic
| Configurazione | Click semplice | Doppio clic |
|---|---|---|
DownloadOnClick: true |
Seleziona, chiama OnMediaClicked, poi si apre DownloadUrl. |
Nessun trattamento aggiuntivo. |
DownloadOnClick: false |
Seleziona e chiama OnMediaClicked. |
Chiamata OnMediaDoubleClicked se esiste; se no, si apre DownloadUrl. |
I file vengono aperti in una nuova scheda. Un iframe con sandbox deve quindi consentire i download o finestre necessarie.
7.6 Tutte le richiamate
OnFolderChanged(folder)
Chiamato dopo navigateToFolder() e dopo un ritorno alla radice sintetica. Non è chiamato dal primissimo initialize().
OnMediaClicked(media)
Chiamato dopo ogni semplice clic, prima dell'apertura automatica finale.
OnMediaDoubleClicked(media)
Chiamato solo al doppio clic quando DownloadOnClick vale false. La sua presenza sostituisce l'apertura automatica a doppio clic.
OnError(error)
Chiamato dopo che l'errore è stato visualizzato. Per una risposta HTTP, error.status Contiene, in particolare, 401, 403 oppure 404. Per un errore di rete, status potrebbe essere assente.
7.7 Tutti i metodi pubblici supportati
| Metodo | Indietro | Descrizione |
|---|---|---|
initialize() |
Promise<void> |
Costruisce l'interfaccia ed esegue il carico iniziale. Da chiamare una volta dopo il costruttore. |
load() |
Promise<void> |
Ricarica l'albero e la piega attuali. Risolve anche il RelativePath se non è ancora stato consumato. |
navigateToFolder(folder) |
Promise<void> |
Apre una cartella da un ID o oggetto di cartella. |
setAllowedExtensions(extensions) |
Promise<void> |
Sostituisce il filtro e ricarica la visualizzazione corrente. [] autorizza tutto. |
setRootFolder(rootFolderIdentifier) |
Promise<void> |
Cambia la radice, resetta la navigazione e ricarica. null, 0 oppure un valore negativo riattiva la modalità multi-radice. |
setSidebarOpen(isOpen) |
void |
Apre o chiude il pannello responsivo. |
refreshFolder(folderIdentifier) |
Promise<void> |
Ricarica l'albero e apre la cartella richiesta dopo una mutazione. null Ritorna alla root disponibile. Normalmente attivato dalla parziale di refresh. |
destroy() |
void |
Elimina il contenuto HTML dall'host. L'istanza non dovrebbe essere usata di nuovo senza una ri-inizializzazione. |
Esempi:
await explorer.load();
await explorer.navigateToFolder(58);
await explorer.navigateToFolder({
Identifier: 15,
Path: "06 PLANS VITRINES/SC01",
IsVirtual: true
});
await explorer.setAllowedExtensions([".jpg", ".png"]);
await explorer.setAllowedExtensions([]);
await explorer.setRootFolder(42);
await explorer.setRootFolder(null);
explorer.setSidebarOpen(true);
explorer.setSidebarOpen(false);
await explorer.refreshFolder(42);
explorer.destroy();
8. Struttura degli oggetti passati ai callback
8.1 Oggetto cartella
| Proprietà | Tipo | Descrizione |
|---|---|---|
Identifier |
number | null |
ID oggetto Folder. null Solo per la radice sintetica. |
Key |
string |
Chiave stabile di visualizzazione: Folder:{id}, Virtual:{path} oppure ExplorerRoot. |
Name |
string |
Visualizza il nome. |
Description |
string | null |
Descrizione, se ce n'è. |
ParentIdentifier |
number | null |
ID genitore Folder. |
Path |
string | null |
Un percorso relativo di blob per una cartella virtuale. |
IsVirtual |
boolean |
Specifica una cartella Blob. |
IsExplorerRoot |
boolean | undefined |
Worth true Solo per la radice sintetica del cliente. |
CreationDate |
JSON data o assente | Data in cui il file è stato creato. |
LastModificationDate |
Data JSON, null o assente |
Ultimo cambiamento noto. |
HasChildren |
boolean |
Indica la possibile presenza di sottocartelle. |
HasMedia |
boolean |
Indica la possibile presenza dei media. |
8.2 Oggetto Mediatico
| Proprietà | Tipo | Descrizione |
|---|---|---|
Identifier |
number |
Identificatore del Media ; vale 0 per un file virtuale. |
Key |
string |
Media:{id} oppure VirtualMedia:{path}. |
Name |
string |
Nome del file. |
Description |
string | null |
Descrizione, se ce n'è. |
ContentType |
string | null |
Tipo MIME conosciuto. |
Handle |
string | null |
Possibile percorso del server; non dovrebbe essere usato direttamente dal client. |
ParentFolderIdentifier |
number |
Identificatore di record (Folder) proprietario o cartella della timeline. |
Size |
number | null |
Dimensione in byte. |
CreationDate |
Data JSON | Data di creazione nota. |
LastModificationDate |
Data JSON o null |
Ultimo cambiamento noto. |
Extension |
string |
Ad esempio, l'estensione standardizzata .pdf. |
Path |
string | null |
Il percorso relativo del blob per un file virtuale. |
IsVirtual |
boolean |
Specifica un file Blob. |
IsImage |
boolean |
Indica un rapporto d'aspetto riconosciuto. |
CanPreview |
boolean |
Indica che è disponibile un'anteprima. |
PreviewUrl |
string | null |
URL del contenuto delle miniature o delle immagini. |
DownloadUrl |
string | null |
L'URL di apertura o download. |
9. Riferimento API HTTP completo
Tutte le strade sono GET under /api/Explorer e richiedono lo stesso contesto di autenticazione della pagina.
9.1 GET /api/Explorer/GetTree
Carica l'albero Immersive.
| Stringa di query | Tipo | Richiesto | Descrizione |
|---|---|---|---|
RootFolderIdentifier |
intero | No | Root imposta. Valueless, carica tutti gli alberi da una cartella senza un genitore. |
Risposta di JSON:
{
"RootFolderIdentifier": 0,
"Folders": [
{
"Identifier": 15,
"Name": "MNM Blob",
"ParentIdentifier": null,
"HasChildren": true
}
]
}
RootFolderIdentifier vale 0 nella risposta della modalità multi-radice.
9.2 GET /api/Explorer/GetFolderContent
Carica il file attuale, i suoi genitori, i suoi figli, i suoi media e la sua traccia di briciole.
| Stringa di query | Tipo | Richiesto | Descrizione |
|---|---|---|---|
RootFolderIdentifier |
intero | No | Root di sicurezza/navigazione. |
FolderIdentifier |
intero | Condizionale | Cartella attuale. Può essere omessa se RelativePath è fornito oppure se viene fornita una radice. |
AllowedExtensions |
Stringa CSV | No | Estensioni visibili. Un valore vuoto permette tutto. |
Path |
Catena | No | Percorso interno verso una cartella Blob già identificato da FolderIdentifier. Usato per la navigazione quotidiana. |
RelativePath |
Catena | No | Il percorso iniziale misto Immersivo/Blob risolto dalla radice esplicita o dalle radici globali. |
Path e RelativePath hanno ruoli diversi: un integratore deve utilizzare RelativePath per un'apertura iniziale e lasciare che il componente gestisca Path mentre navigava su Blob.
Proprietà chiave della risposta:
| Proprietà | Descrizione |
|---|---|
RootFolderIdentifier |
Radice richiesta o 0 in modalità multi-radice. |
IsVirtual |
Indica che il contenuto attuale proviene da un Blob. |
Path |
Percorso nel Blob. |
VirtualFolderPath |
L'URL di montaggio della cartella virtuale. |
CurrentFolder |
File attuale. |
ParentFolder |
Genitore navigabile o null. |
Children |
Sottocartelle dirette. |
Media |
Diretto i file dopo il filtraggio. |
Breadcrumb |
Fasi della traccia di briciole di pane Immersive, poi Blob. |
Capabilities.CanCreateFolder |
Permette di mostrare la creatività quando EnableEditing è attiva. |
Capabilities.CanEditFolder |
Permette di visualizzare la modifica quando EnableEditing è attiva. |
Capabilities.CanDeleteFolder |
Permette di visualizzare la cancellazione quando EnableEditing è attiva. |
RootCapabilities.CanCreateFolder |
Permette la creazione nella radice sintetica per l'organizzazione attuale. |
9.3 GET /api/Explorer/GetBreadcrumb
Percorso preservato per compatibilità. Il componente attuale non ne ha più bisogno, perché GetFolderContent già torna Breadcrumb.
| Stringa di query | Tipo | Richiesto | Descrizione |
|---|---|---|---|
RootFolderIdentifier |
intero | No | Radice imposta. |
FolderIdentifier |
intero | Sì | File attuale. |
Path |
Catena | No | Strada comune del Blob. |
La risposta contiene { "Items": [...] }.
9.4 GET /api/Explorer/GetContent/{mediaIdentifier}
Stream, media o file citati da Handle.
| Parametro di Percorso | Tipo | Descrizione |
|---|---|---|
mediaIdentifier |
intero | ID Immersive Media. |
Il contenuto viene letto in flussi sequenziali. Un file fisico supporta richieste di intervallo HTTP.
9.5 GET /api/Explorer/GetVirtualContent
Serve un file che appartiene a una cartella virtuale.
| Stringa di query | Tipo | Richiesto | Predefinito | Descrizione |
|---|---|---|---|---|
FolderIdentifier |
intero | Sì | — | Identificatore del file che porta VirtualFolderPath. |
Path |
Catena | Sì | — | Il percorso del file nel Blob. |
Download |
Booleano | No | false |
Aggiunge una disposizione attachment quando il valore è true. |
Il server trasmette i contenuti del Blob tramite streaming.
9.8 Codici HTTP utili
| Codice | Significato usuale |
|---|---|
200 |
Query riuscita. |
400 |
Parametro mancante, percorso assoluto o presenza di . / ... |
401 |
Sessione assente, scadente o token invalido. |
403 |
Identità autenticata ma non autorizzata. |
404 |
Root, cartella, percorso o file non trovato; cartella fuori dalla root imposta. |
10. Risoluzione dei problemi
Sessione scaduta o token non valido
- Controlla la scadenza dei token.
- verifica che l'URL ne contenga solo una
?; - verifica che
Tokennon è stata troncata né doppiamente codificata.
Accesso negato
L'account o il token non ha i diritti necessari. Contatta un amministratore di Immersive.
Risorsa non trovata
- Controllo
RootFolderIdentifier; - Rimuovere la root per controllare la presenza della cartella in modalità multi-root.
- controlla il nome di ogni cartella Immersive
RelativePath; - con una radice imposta, non ripetere il suo nome in
RelativePath; - senza una radice imposta, verificare che il primo segmento sia il nome di una cartella senza un genitore;
- Verifica il caso dei segmenti Blob.
- Verifica che il file o il contenitore esistano.
Cartella Blob vuota o sottocartelle mancanti
- Controllo
VirtualFolderPath; - Verifica che l'URL prenda di mira la radice del contenitore.
- Controlla l'accesso anonimo per lettura e enumerazione.
- Verifica che RestFrontage possa raggiungere Azure.
- verifica che i nomi delle Blob usino
/; - Verifica che il risultato Azure non richieda una pagina successiva non ancora gestita.
Alcuni file non appaiono
- Controllo
AllowedExtensions; - Rimuovi completamente questa impostazione per vedere tutto.
- Controlla che il file abbia l'estensione prevista.
Il download non inizia in un iframe
Controllo sandbox, allow-downloads, allow-popups, CSP e blocco del pop-up del browser.
11. Checklist per l'integrazione
- La modalità multi-root o la radice imposta corrisponde alla necessità di sicurezza e navigazione.
- Nomi usati in
RelativePathAbbina una vera stringa genitore/figlio. - Il primo segmento di
RelativePathSi riferisce a una radice di una cartella Immersive quandoRootFolderIdentifierè assente. - Azure segmenti Blob sensibili a maiuscozze.
- Le estensioni sono specificate, oppure il filtro viene omesso per mostrare tutto.
- L'account o il token ha i diritti necessari.
- L'URL utilizza una singola
?, allora&. - Il percorso è relativo e correttamente codificato.
- Il contenitore Blob è raggiungibile, leggibile e enumerabile.
- L'iframe permette gli script necessari, le aperture e i download.
- Non vengono conservati veri token nel codice sorgente o nella documentazione.
- Il comportamento viene verificato sia su desktop che su mobile.