Una soluzione intermedia a quelle proposte da motogpdesmo16 è quella di salvare i file in una cartella protetta (in IIS è possibile togliere la proprietà Read ad una cartella) rinominandoli opportunamente con una GUID o con un nome random univoco. In un database si andranno a memorizzare il nome univoco del file guid, il nome originale e la dimensione, in modo da poterlo rispedire identico in seguito all'utente. Con un click su un LinkButton esegui questa porzione di codice:
codice:
Response.Clear()
Response.AddHeader("Content-Disposition", String.Format("attachment; filename={0}", nome_file_originale))
Response.AddHeader("Content-Length", dimensione_file)
Response.Charset = "UTF-8"
Response.ContentType = "application/octet-stream"
Response.TransmitFile(path & "\" & nome_file_guid)
Response.End()
Ovviamente ho omesso le parti di codice che leggono i valori dal database.