Nella versione 102 di Chrome, troviamo nuove specifiche per l'interazione delle PWA con il file system, rendendo un'applicazione web sempre più simile a una nativa. Tali modifiche sono già disponibili anche su altri browser.
Per arrivare a ciò, non dovremmo agire solo sul codice, ma modificare anche il manifest.json, il file che verrà letto dal dispositivo per consentire l'intallazione come PWA. Al suo interno avremo bisogno di aggiungere la proprietà "file_handlers" come mostrato nell'esempio.
{
[...],
"file_handlers": [
{
"action": "/open-csv",
"accept": {
"text/csv": [".csv"]
},
"icons": [
{
"src": "csv-icon.png",
"sizes": "256x256",
"type": "image/png"
}
],
"launch_type": "single-client"
},
{
"action": "/open-svg",
"accept": {
"image/svg+xml": ".svg"
},
"icons": [
{
"src": "svg-icon.png",
"sizes": "256x256",
"type": "image/png"
}
],
"launch_type": "multiple-client"
}
]
}
Tramite l'array di oggetti abbiamo specificato la possibilità di aprire sia file csv, in modalità singola, che svg, con la possibilità di selezionare più file.
Per concludere dovremmo scrivere il codice JavaScript per aprire la finestra di selezione adeguata per tali file. Anche in questo caso possiamo usare tutto quello che il sistema ci fornisce gratuitamente, scrivendo poche semplici righe di codice.
// verifico l'esistenza della funzionalità
if ('launchQueue' in window && 'files' in LaunchParams.prototype) {
// imposto il gestore del selettore del file
launchQueue.setConsumer((launchParams) => {
// Verifico che vi sia almeno un file
if (!launchParams.files.length) {
return;
}
for (const fileHandle of launchParams.files) {
// Gestione del file
}
});
}
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Avviare rapidamente un container con Azure Container Apps Express
Interazione con ReconnectModal in Blazor
Importare repository da Bitbucket a GitHub Enterprise Cloud
Utilizzare i command service nei test con .NET Aspire
Personalizzare i parametri del CSS Scroll Snap
Operazioni tra insiemi di array in Javascript
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata
Recuperare gli audit log in Azure DevOps
Utilizzare AbortController per cancellare operazioni asincrone in JavaScript
Gestire il ciclo di vita di AbortController in Javascript
Esporre tool MCP con Azure Functions
Modificare lo stile in una QuickGrid Blazor


