这个不能说是原理,很简单,应该说功能实现代码写个很多,但是从项目里面给你摘出来太麻烦了
看看这个吧,一般文件是不存到数据库里面的。
http://blog.csdn.net/ahxu/archive/2004/10/29/159258.aspx

解决方案 »

  1.   

    客户端:在上传文件的form表单上加ENCTYPE="multipart/form-data
    表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
    enctype=\"multipart/form-data\"是上传二进制数据; form里面的input的值以2进制的方式传过去。
    form里面的input的值以2进制的方式传过去,服务端:拿到请求后,解析数据流,读取其中的文件流保存到服务器硬盘上,然后在做后续处理例如保存到数据库中
      

  2.   

    下载的话,下载文件和浏览网页(就是下载html)下载js没什么区别只是响应头信息不同,html可以用浏览器打开,rar打不开而已。