ASP的无惧上传类V2.2上传不了没错误提示的解决bug
本文来自:http://www.zreading.cn/ican/2012/08/asp-upload/
最近在开发一个项目的时候,用到无惧上传类,但一个程序正常,另一个程序却不行,后来上网搜索,才发现这是无惧上传类的一个Bug,当路径中的文件夹名含有点.号的时候就上传不了,本文给出了解决方案。我遇到的是第一种情况。
这几天在运用一个asp程序,它引用了xheditor编辑器,引用了无惧上传类 V2.2 xheditor特别修改版的上传程序upload.asp,在本地测试上传图片和文件都能成功,问题出在上传到服务器后图片上传不成功。 这里的不成功有几种,我是第2种,我分别说明一下: 第1种:出现文件根本无法上传的情况,这是由于无惧上传类v2.2的一个BUG 使用了“无惧上传类 v2.2”,在运行中出现这样一个问题,上传文件时提示上传成功,但文件实际上并没有传上去。然而,如果使用“无惧上传类 v1.2”的话就没有这个问题。经过对比代码,找到了问题的所在,我认为这应该是“无惧上传类 v2.2”的一个BUG。 后面判断若没有问题可以上传,则执行这样一行将文件写到本机中: Path是上传的文件在本机的全路径。可以看出,作者的本意是tmpPath的值为文件本机全路径去掉扩展名和连接扩展名的“.”,这样做主要是基于安全上的考虑。然而,实际使用时路径中有一个“.”,如“D:/web/aaa.com/bbb/”,这样,tmpPath的值就是“D:/web/aaa”,这明显是错误的。出现了这样的问题依然提示上传成功的原因是SaveToFileEx函数的开头有一个“On Error Resume Next”。 这样,我们对SaveToFileEx函数进行一些修改,让其先截取路径和文件名,存放于onlyPath和onlyFileName中,再对onlyFileName进行扩展名截取。将tmpPath=Split(Path,”.”)(0)修改为以下代码: 然后将写文件的代码改成这样: 进行了这样的修改,再运行就没有问题了。这个是文件保存路径不对造成的。 第2种:文件上传成功到指定的目录,但无法加载到ubb编辑框里,或者加载到ubb编辑里是个不一样的文件名。 若把upload.asp文件开头的on error resume next去掉,上传文件的过程会出如下错误: 本地测试文件上传成功,服务器也上传到了指定目录,就是无法这个moveFile函数,这是为什么呢? 有个原因:会不会是服务器上目录结构存在差异,如果跟踪一下Server.MapPath(newfile) ,看这个是否正确? 我测试过,找不出问题,只好不要这个函数,而是直接把上传后的文件名oldfile直接赋给newfile 把原来的代码: 改为: 这当然是坏办法,却也只能这么办了暂时,因为结果这样图片就上传成功了。 |