背景

在WEB程序中下载一个文件,最简单有效的办法就是直接给个链接到该文件的虚拟路径,把所有的问题交给浏览器和WEB服务器(IIS)去处理,但这种“良好”好的解决方案也会带来一些其它问题,譬如:无法在程序中控制下载权限,无法统计下载信息,无法将文件名更改为一个对客户良好的名字(事实上,为了避免服务器中文件名的重复,我们一般会分配给文件一个很长而又没有任何实际意义的名字,这不是客户端希望看到的,所以我们有必要在下载时重新为文件分配一个有意义的名字)。