你刚学ASP的时候是不是也好奇,那些能上传头像的网站到底是怎么做到的?今天咱们就掰开了揉碎了讲讲这个事,保证看完你就能自己动手做文件上传功能!
先别急着写代码,咱们得搞明白三个基本问题: – 用户传的文件都去哪了? – 怎么防止人家传病毒文件? – 上传的文件会不会把服务器撑爆?
这里有个重要知识点要记牢:ASP处理文件上传得靠表单的enctype属性。这个属性必须设置成”multipart/form-data”,相当于告诉服务器”我这表单里夹带私货了”。举个栗子,你的表单标签应该长这样: “`html
“` 接下来咱们分步骤走: 第一步 创建上传表单 别整那些花里胡哨的,基础款就够用: “`html “` 注意这个file类型的input就是文件选择按钮,name属性后面要用到。 第二步 服务器端处理 ASP里处理上传文件主要用**Request.BinaryRead**方法。这个方法能把上传的二进制数据整个读出来。不过要当心,直接这么用可能会搞崩服务器,特别是大文件上传的时候。 这里有个代码模板: “`asp <% dim> “` 第三步 保存文件 拿到二进制数据后,咱们得用**ADODB.Stream**对象来存文件。这个对象就像个水管,能把数据流导到指定位置: “`asp <% Dim stream Set stream = Server.CreateObject(“ADODB.Stream”) stream.Type = 1 ‘二进制模式 stream.Open stream.Write uploadData stream.SaveToFile Server.MapPath(“/uploads/”) & “\myfile.jpg”, 2 stream.Close %“` 这时候你可能会问:用户要传的不是图片怎么办?怎么防止他们乱传文件? 关键来了——文件类型检查!咱们得在保存文件前做验证: “`asp <% dim> “` 再来说说新手最容易踩的三个坑: 1. 忘记设置enctype属性,结果死活收不到文件 2. 没做文件类型检查,被人上传了可执行文件 3. 保存路径写死,导致文件覆盖或者路径错误 这里有个真实案例:去年有个论坛网站就因为没做文件类型检查,被人上传了木马程序,最后整个服务器都被端了。所以安全问题真不是闹着玩的! 最后给几个实用建议: – 给上传目录设置**只写权限**,防止脚本执行 – 用随机文件名代替原始文件名,避免文件名冲突 – 定期清理上传目录,别让垃圾文件堆满硬盘 – 超过10MB的文件建议分块上传 小编觉得,文件上传看着简单,实际暗藏玄机。特别是安全防护这块,宁可多写几行代码检查,也别偷懒省事。下次你要是自己做网站,记得今天说的这些要点,保准能少走很多弯路。本站文章由SEO技术博客撰稿人原创,作者:阿君创作,如若转载请注明原文及出处:https://www.ainiseo.com/hosting/17043.html