Skip to main content

Come creare file e archivi ZIP per il download con ASP.NET MVC e C#

Durante lo sviluppo di una applicazione web con ASP.NET MVC e/o ASP.NET Core può capitare di avere l’esigenza di dover creare un archivio ZIP all’interno di un Controller, ad esempio per consentire ai propri utenti di effettuare il download di più file all’interno di una singola request.

Fino a non molto tempo fa il modo migliore per implementare questa feature era ricorrere a librerie esterne, come le note SharpZipLib, DotNetZip e via dicendo… a meno di non voler ricorrere al namespace System.IO.Compression, a patto però di rinunciare a molte delle comodità garantite dalle soluzioni sopracitate.

A partire dal .NET Framework 4.5 è stata finalmente introdotta anche una soluzione nativa che, almeno nelle sue funzionalità di base, non ha nulla da invidiare alle librerie di terze parti più diffuse: si tratta della classe ZipArchive, new-entry del namespace System.IO.Compression, che consente di creare archivi in modo estremamente semplice e veloce.

Di seguito un veloce esempio che utilizza un MemoryStream e un paio di byte array contenenti i dati di altrettanti file da comprimere:

(altro…)

 

WannaCry: come controllare se il proprio sistema è protetto con uno script PowerShell

Se vi siete imbattuti in questo articolo probabilmente sapete già tutto sul Ransomware noto come WannaCry o WannaCrypt, del quale abbiamo già avuto modo di parlare in questo articolo che contiene una lista completa di tutti gli aggiornamenti che è opportuno effettuare (per tutte le versioni di Windows) per immunizzare il proprio sistema.

Quello che però forse ancora vi manca è un modo efficace per controllare se il vostro PC (o i vostri PC aziendali) sono effettivamente immuni. A tale scopo forniamo il seguente script Powershell, distribuito all’interno di questo articolo del community site del noto software di IT monitoring SpiceWorks (si ringrazia CarlosTech per il preziosissimo contributo):

(altro…)

 

Come visualizzare le dimensioni di tutte le tabelle MySQL in uno o più Database (e altre query similari)

Ieri stavo perdendo un pò di tempo ad analizzare una singolare situazione che si era verificata in uno dei tanti MySQL database da me amministrati: un incremento improvviso (e almeno apparentemente anomalo) delle dimensioni, ovvero dello spazio occupato su disco. Poiché non avevo idea di quante e quali tabelle fossero affette da tale problema, la prima cosa che ho fatto è stata dotarmi di uno strumento in grado di poter mostrare un elenco di tutte le tabelle presenti nei vari DB, ordinate per dimensione.

Sono riuscito ad effettuare questa analisi in poco tempo grazie all’aiuto di queste query, realizzate sulla base di questa risposta sul sito StackOverflow.

(altro…)

 

ERR_BLOCKED_BY_XSS_AUDITOR in Google Chome – Come risolvere

Con l’uscita della recente versione 57 del browser Google Chrome la funzionalità di XSS auditing ha subito alcuni importanti miglioramenti, che di certo comporteranno una maggiore protezione per gli utenti più inclini ad essere soggetti ad attacchi di tipo XSS (Cross-Site Scripting – se non sapete di cosa si tratta, leggete qui). Sfortunatamente, questa modifica ha comportato anche il malfunzionamento di alcuni servizi online, che da qualche settimana restituiscono il seguente errore HTTP:

ERR_BLOCKED_BY_XSS_AUDITOR

Il problema è quasi sempre legato alla presenza di un contenuto HTML inviato tramite POST all’interno di una request tramite form o AJAX, tecnica utilizzata da servizi anche molto diffusi nel panorama web moderno – editor WYSIWYG, uploader interattivi, strumenti di real-time editing tipici di molti CMS e così via.

La domanda a questo punto nasce spontanea: come risolvere questo problema e ripristinare il funzionamento del servizio?

Nel caso in cui si tratti di uno strumento sviluppato da terze parti, la cosa migliore da fare è probabilmente segnalare la funzionalità agli sviluppatori e/o controllare se esiste una patch recente in grado di risolvere il problema. Se questo tentativo non si rivela efficace, o se il problema si verifica su uno script o servizio sviluppato da noi, occorre invece rimboccarsi le maniche e darsi da fare per risolvere il problema. E’ quanto mi è toccato fare la settimana scorsa, quando mi sono trovato a dover applicare un fix d’urgenza a uno strumento che avevo sviluppato per un amico qualche tempo fa: un viewer di fatture elettroniche in grado di interpretare – e mostrare a schermo – il formato più recente previsto dagli standard della Pubblica Amministrazione, rilasciato al pubblico nel 2016 e già utilizzato da moltissime aziende e professionisti in Italia. (altro…)

 

Input type number in HTML5 con supporto numeri decimali con virgola

Tra le moltissime funzioni utili introdotte dallo standard HTML5, una delle più utili è quella che consente di impostare una tipologia di dato agli elementi <input>: color, date, datetime-local, email, month, number, range, search, tel, time, url e week. Ciascuna di loro attiva un componente specifico del browser che consente all’utente di selezionare il valore desiderato in modo estremamente user-friendly, rendendo finalmente superflui tutti quei plugin jQuery, jQuery UI, Bootstrap et. al. che fino ad alcuni anni fa erano l’unico modo per ottenere lo stesso effetto… al costo però di appesantire notevolmente la componente client-side delle nostre pagine web. (altro…)