听说五行代码实现图片上传
[讨论]请教:一段网上的代码
网上流行着asp五行代码实现上传图片,可本人在调试第一段代码时出现错误: 技术信息(用于支持人员) 错误类型: Microsoft VBScript 编译器错误 (0x800A0408) 无效字符 /asp_test/upload.asp, line 12 objStream.Type=1 浏览器类型: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon) 网页: GET /asp_test/upload.asp 以下是网上流行的内容,请问此代码的错误原因是什么??objStream.Type=1为什么错误的呢? 目前有很多无组件上传类,大多写的相当复杂,有的居然还只能传文本,最关键的是没有10行代码以下的。 其实无组件上传最核心的代码就是ADODB.Stream,实际只用五行代码就可以实现了无组件上传。 Set objStream = Server.CreateObject("ADODB.Stream") objStream.Type = 1 objStream.Open objStream.LoadFromFile Request("upfilename") objStream.SaveToFile Server.MapPath("test.gif"),2 使用方法: 把上面的代码写成upload.asp,在浏览器里面输入http://localhost/upload.asp?upfilename=c:\test\test.gif localhost为你的主机地址,执行完后你会看到你的目录下面多了一个test.gif,他就是你要文件拉。 根据原理我们可以扩展以下代码,算一个最小的ASP木马吧,有一点值得注意,上传的本地文件路径不能包含中文字符,否则会出错。 upload.asp文件 <% Function GetFileName(ByVal strFile) If strFile <> "" Then GetFileName = mid(strFile,InStrRev(strFile, "\")+1) Else GetFileName = "" End If End function strFileName = Request.Form("upfilename") If strFileName<>"" Then Set objStream = Server.CreateObject("ADODB.Stream") objStream.Type = 1 objStream.Open objStream.LoadFromFile strFileName objStream.SaveToFile Server.MapPath(GetFileName(strFileName)),2 objStream.Close response.write "OK!" Else %> <form action='<%= Request.ServerVariables("URL") %>' method='post'> <input type='file' name='upfilename'> <input type='submit'></form> <% End if %> |