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
Creare automaticamente una issue di GitHub
Centrare elementi in HTML tramite CSS
Velocizzare l'installazione delle dipendenze in un workflow di GitHub
Utilizzare flat e flatMap per appiattire array innestati in array
Utilizzare .NET Framework con le Azure Function in modalità isolata
Monitorare i server on-premises con Azure Arc
Ottenere il riferimento alla finestra che ha aperto un'altra finestra con HTML5 e JavaScript
Sfruttare la local cache del browser tramite gli ETag in ASP.NET Core
Effettuare update massivi con Entity Framework Core 7
Gestire la query string nell'output cache di ASP.NET Core
Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache
Gestire il fallimento di uno step in un workflow di GitHub