Mettilo nel database, ma il BLOB
il tipo di dati probabilmente non lo taglierà. Il MEDIUMBLOB
è normalmente sufficiente.
BLOB, TEXT L + 2 bytes, where L < 216
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 224
LONGBLOB, LONGTEXT L + 4 bytes, where L < 232
L'ho usato diverse volte con ottimi risultati. Assicurati di salvare anche la dimensione del file, in quanto rende più facile recuperarlo. Non sono sicuro che si applichi a C# come a PHP.
Se si utilizzano istruzioni preparate con parametri, i dati verranno automaticamente sottoposti a escape AFAIK.
Inoltre, non vedo alcun motivo reale per cui il database stesso rallenterebbe durante la memorizzazione di questo tipo di dati al suo interno. Il principale collo di bottiglia sarà ovviamente il trasferimento dei dati. Inoltre MySQL a volte è restrittivo riguardo alla lunghezza massima delle query e delle risposte in particolare.
Una volta che lo hai in esecuzione, è abbastanza pulito, specialmente quando hai a che fare con molti piccoli file. Per un numero limitato di file di grandi dimensioni, questo approccio non ha senso, meglio utilizzare un sistema di backup per gestire i file spostati/cancellati.