ASP版UEditor编辑器上传图片或文件出错的解决方法推荐 收藏


  • :
  • 03-06 22:01
  • :
  • 545次
  • :
  • 0条
  • 2赞

简介在使用ASP版的UEditor进行图片上传时,上传失败的解决方法。

UEditor是一个使用起来非常方便的插件,因为ASP的环境配置最为容易,所以站长我一直用的都是ASP版的。

今天在做完一个WEB项目后,上传到服务器上后,在使用UEditor编辑器里的上传图片功能时,竟然出错了,在本地的时候测试是没有问题的,站长只好深入代码开始查找问题出在哪。

一般上传会出现问题,都是下面这两个原因:

1.配置问题:打开UEditor的ueditor.config.js,及ASP下的config.json,这两个文件,仔细查看里面的相关配置是否有问题。

2.权限问题:包括目录的写入和修改权限,及IIS里的执行权限。

目录的写入和修改权限,先看看设置的上传文件夹的权限是否正确。

IIS里的权限,则一定要给编辑器里的ASP这个文件夹加上“执行脚本”的权限。

上面两个原因,站长我都仔细检查了,都没问题,并且UEditor编辑器也只提示上传出错,并没有提示具体的原因,所以站长只好一点一的来判断具体是代码的哪一部分出错了。

过程很痛苦,真的很痛苦,最后检查出还是“权限”的问题,并不是上面说的目录权限和IIS的权限,而是Uploader.Class.asp这个文件里,函数:CheckOrCreatePath 的“权限”。

CheckOrCreatePath函数是用来创建要保存上传的图片或文件的目录的,它原本的函数代码如下:

Private Function CheckOrCreatePath( ByVal path )
    Set fs = Server.CreateObject("Scripting.FileSystemObject")
    Dim parts
    parts = Split( path, "\" )
    path = ""
    For Each part in parts
        path = path + part + "\"
        If fs.FolderExists( path ) = False Then
            fs.CreateFolder( path )
        End If
    Next
End Function

从上面的代码中是看不出问题的,问题就出在传入的那个“参数” 上了,在DoUpload函数里,用到了CheckOrCreatePath这个函数,我们来看具体的代码:

savePath = Server.MapPath(rsFilePath)
CheckOrCreatePath(  GetDirectoryName(savePath) )

从上面这段代码里,我们可以看出,传入CheckOrCreatePath函数的参数是个绝对路径,而CheckOrCreatePath函数就是根据传入的这个绝对路径来一层一层的判断相应的目录文件夹是否存在,不存在就创建。

但是我们要知道,绝对路径都是类似“C:\www\”这样的结构的,所以在CheckOrCreatePath函数里,在循环判断时,肯定是从C盘里来一层一层的判断的,但我们的WEB想要去判断超出我们程序所在的目录是否存在,明显就是“权限”不够的。

所以要解决也很简单,稍微改一下CheckOrCreatePath函数就行了,我们把我们WEB所在的目录,替换掉参数里的,然后从我们WEB所在的目录开始判断就行了:

Private Function CheckOrCreatePath( ByVal path )
    Set fs = Server.CreateObject("Scripting.FileSystemObject")
    Dim parts
    Dim root : root = Server.mappath("/") & "\"
    parts = Split( Replace(path, root, ""), "\" )
    path = root
    For Each part in parts
        path = path + part + "\"
        If fs.FolderExists( path ) = False Then
            fs.CreateFolder( path )
        End If
    Next
End Function

经过站长的测试,把CheckOrCreatePath函数的内容替换成下面这一个后,问题就完美的解决了!



您正在找的文章可能是: