Esplora file incorporabile

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:

  1. Barra di comando : Creare, modificare, cancellare e aggiornare in base alla configurazione e ai diritti dell'utente.
  2. Cartelle —L'albero Immersivo e Blob sul lato sinistro dei grandi schermi.
  3. Sentiero delle Bricie di Pane : Il percorso della cartella corrente e il pulsante freccia per tornare al genitore.
  4. Indice : Sottocartelle e file mappe.
  5. 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:

  1. Cartelle immersive, identificate in base alla loro proprietà Name ;
  2. 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: Bearer le 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 AllowedExtensions come 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;
  • VirtualFolderPath Deve 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&amp;RootFolderIdentifier=15&amp;AllowedExtensions=.pdf"
    title="Documents du projet"
    loading="lazy"
    allow="fullscreen">
</iframe>

Se sandbox viene utilizzato, autorizza se necessario:

  • allow-scripts per far funzionare l'Explorer;
  • allow-same-origin per il contesto di autenticazione;
  • allow-downloads per i download;
  • allow-popups per 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 ;
  • ExtensionIconUrlBuilder a /Content/Common/{extension}.svg ;
  • MimeTypeIconUrlBuilder a /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 è:

  1. miniatura reale se media.IsImage e media.PreviewUrl vengono riempiti;
  2. risultato di ExtensionIconUrlBuilder(extension, media) ;
  3. risultato di MimeTypeIconUrlBuilder(media.ContentType, media) ;
  4. 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 Token non è 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 RelativePath Abbina una vera stringa genitore/figlio.
  • Il primo segmento di RelativePath Si riferisce a una radice di una cartella Immersive quando RootFolderIdentifier è 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.