追万软件公司-专业从事企业软件定制系统软件开发用户管理系统进销存系统等软件开发

软件开发过程中,百度UEditor编辑器在服务中不能上传图片

不可否认,百度UEditor是一款非常优秀的web编辑器,近期我们在开发一套软件项目过程中,就使用到这款编辑器,待项本地测试完全没问题后,将文件发布到服务器,却发现,该编辑器的上传图片功能不能使用,但系统默认的上传功能是没问题,这说明服务器该开的权限都开了。

我们在网上搜了一下各种各样的解决方案,什么权限没开等各式各样说法,这些可能是针对该编辑器历史版本解决方案,但对于1.4.3版本来说,完全没有任何作用。
网上始终找不到任何有效解决方案,项目我们已经全部结束,只有这个编辑器小BUG,也不愿意把这么优秀的编辑器换掉,所以我们就硬着头皮来解决这个骨头,解决好之后,后面每个软件开发项目都可以使用到这么优秀的编辑器,何乐不为呢?
下面上海软件开发公司为你重点讲述下这个BUG的原因及解决方案?
归根结底还是路径没弄懂所导致的,IIS服务器中匿名账号可以磁盘上的非用户目录,这就是为什么本地测试成功,传到服务器或者空间不能用的原因了。
找到原因后,我们针对这个问题进行解决,打开Uploader.Class.asp找到CheckOrCreatePath函数,路径不需要我们说了吧

savePath = Server.MapPath(rsFilePath)
CheckOrCreatePath(  GetDirectoryName(savePath) )
stream.SaveToFile savePath
修改成:
savePath = rsFilePath
CheckOrCreatePath(  GetDirectoryName(savePath) )
stream.SaveToFile Server.MapPath(savePath)

修改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

修改成:

Private Function CheckOrCreatePath( ByVal path )

        Set fs = Server.CreateObject("Scripting.FileSystemObject")

        Dim parts,root

root  = "/"

        parts = Split( path, "/" )

        path = ""

        For Each part in parts

if trim(part) <> "" then

path = path + part + "/"

If fs.FolderExists( Server.MapPath(root & path) ) = False Then

fs.CreateFolder( Server.MapPath(root & path) )

End If

end if

        Next

End Function


将这代码COPY进去,绝对没有问题,我们已经将这更改的代码发布到我们实际软件开发项目中了,如果不把这路径问题处理掉的话,那么你上传图片图片永远只能在本地运行,不能在服务器中运行了。

最新文章

热门文章