zoukankan      html  css  js  c++  java
  • eWebeditor编辑器上传图片路径错误解决方法[疑难杂症]【转,作者:unvs】

    做了一个多版本的网站,后台用的编辑器是eWebeditor,NET版,后面发现上传图片或者文件之后,路径错误无法显示,必须手工修改才行。。

    为了更清楚的说明问题,我下面会说的比较详细,首先是网站文件框架路径(多版本网站为实例),然后解释上传文件的文件含义,最后会根据问题说出不同的原因及解决方法:

    一、网站文件框架

    wootroot(网站根目录) cn(中文版文件夹) admin(后台目录) eWebeditor(后台编辑器文件夹) upload(上传处理文件夹)  default.aspx
      en(英文版文件夹) admin(后台目录)    dialog(编辑器调用页面文件夹)  img.htm
      uploadimg(上传图片保存文件夹)  webconfig(各个版本目录下的配置文件)      
      webconfig(根目录配置文件)        

     上面的栏目框架图示,应该比较易懂吧,O(∩_∩)O,意思就是一列就是网站的一级目录

    二、解释文件含义

    上传文件,保存文件,并返回值,主要都在编辑器目录下的upload文件夹里的default.aspx里完成的,所以下面,只解释这个页面(为了让博友更加明白,也说下点击编辑器调用的文件,即上面框架中的dialog文件夹里的img.htm文件),下面是eWebeditor编辑器界面图:

    1、点击编辑器里的图片编辑,弹出如下对话框,如图:

    2、下面的upload文件夹里default.aspx.cs里主要代码(即点击上面图示确认按钮,触发的事件代码):

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (this.uploadfile.PostedFile.FileName == "") //判断文件是否为空,弹出相应提升;
            {
                Response.Write("<script>parent.document.all(‘divProcessing’).style.display=’none’;</script>");
            }
            else
            {
                string _flag = Request["flag"]; //判断文件上传类型;
                string _regex = "";

                switch (_flag)
                {
                    case "img":
                        _regex = @"^.+.(jpe?g|gif|bmp|png)$";
                     &nbsp
    ;  break;
                    case "flash":
                        _regex = @"^.+.(swf)$";
                        break;
                    case "media":
                        _regex = @"^.+.(wmv|avi|rmvb|mpeg|mov)$";
                        break;
                    case "file":
                        _regex = @"^.+.(rar|zip|doc|pdf|txt)$";
                        break;
                    default:
                        _regex = @"^.+.(jpe?g|gif|swf|wmv|avi|rmvb|mpeg|mov|rar|zip|doc|pdf|txt)$";
                        break;
                } //这段就不介绍了,判断文件类型及格式;

                Regex test = new Regex(_regex);//调用事件;

    if (test.IsMatch(uploadfile.PostedFile.FileName) == true)
                {
                    ClientScriptManager cs = Page.ClientScript;

                    string imagesfolder = ConfigurationManager.AppSettings["uploadFolder"].ToString(); //调取配置文件路径;
                    string filename = UpLoadFile(uploadfile, imagesfolder); //调用uploadfile方法获取文件路径,其中uploadfile为上传文件的控件名称;
                    string apurl = Request.Url.ToString(); //获取当前URL路径;
                    string apurl2 = Request.CurrentExecutionFilePath; //获取文件目录名称;例如:/Cn/admin/eWebeditor/upload/default.aspx   –详细请查看request返回当前地址大全
                    string tempurl = apurl.Substring(0, apurl.IndexOf(apurl2)); //截取指定位数的路径;
                    string appurl = Request.ApplicationPath; //调用应用程序路径;例如:www.unvs.cn
                    string hurl = appurl + filename.Replace("~/", ""); //这步是最关键的,直接影响是否可以上传成功,意为目录路径+文件经过替换的路径(因为配置文件调取路径含~/,如果不替换,将会出错);hurl为图片保存后返回的参数,即图片的src;

                    //if (appurl.Length == 1) //这句判断注释代码是判断appurl获取的长度,而对参数进行赋值;
                    //    hurl = appurl + filename.Replace("~/", "");
                    //else
                    //    hurl = appurl + "/" + filename.Replace("~/", "");

                    string imgpreview = tempurl + hurl; //预览效果图链接;

                    cs.RegisterClientScriptBlock(this.GetType(), "tt", "parent.document.all(‘divProcessing’).style.display=’none’;parent.document.all(‘imgPreview’).src=’" + imgpreview + "’;parent.document.all(‘Hurl’).value=’" + hurl + "’;parent.document.all(‘d_fromurl’).value=”;", true); //返回参数;

                    lblinfo.Text = "文件上传成功!<a href="">重新上传</a>";
                }
                else
                {
                    lblinfo.Text = "您上传的文件类型不正确!<a href="">重新上传</a><script>parent.document.all(‘divProcessing’).style.display=’none’;</script>";
                }
            }
        }

    3、下面是cn版本目录下的webconfig配置文件,关键部分:

      <appSettings>
        <add key="CndbPath"  value="~/cn/App_Data/##@@##.mdb"/> //这里前面几个配置的都是路径,由后台进行直接调取的;
        <add key="upImgPath" value="~/uploadImg/"/>
        <add key="upFilePath" value="~/uploadImg/"/>
        <add key="upsmallImgPath" value="~/uploadImg/"/>
        <add key="uploadFolder" value="~/uploadImg/"/>
        <add key="uploadExts" value="jpg|gif|bmp"/>
        <add key="SmallImgHeight" value="41"/>
        <add key="SmallImgWidth" value="70"/>
        <add key="DefaultLanguage" value="Kn"/>
        <add key="DisableCn" value="true"/>
        <add key="DisableEn" value="true"/>
        <add key="DisableJn" value="true"/>
        <add key=
    "DisableKn" value="false"/>
        <add key="VirtualPath" value=""/>
      </appSettings>

    4、简单分析各种图片上传路径错误解决方法:

    一种图片路径为:http://www.***.cn/~/uploadimg/pic.jpg

    这个错误为hurl参数,没有进行~/符号替换成" "所导致,直接将hurl 参数加上 filename.Replace("~/", "");即可;

    一种图片路径为:http://uploadimg/pic.jpg

    这个错误同样为hurl参数中,替换错误,没有把"/"加进去而导致,错误的写法是这样的 filename.Replace("~", "");加上/即可;暂不知为啥/没有替换,就会出现上面路径,网站url会不见,可能//两斜杠会把网站url隐藏掉;

    5、以上就是几点上传图片路径返回错误的解决方法,仅个人对此的分析,不知解释是否正确或存在有误,还望同道中人指出并留下自己的见地!!O(∩_∩)O

  • 相关阅读:
    nginx解决跨域问题
    SSM整合相关试题
    SSM整合案例--用户登录
    非法用户登录拦截
    SpringMVC拦截器和数据校验
    SpringMVC文件上传
    SpringMVC异常处理
    SpringMVC方法的返回值类型和自动装配
    SpringMVC
    spring和mybatis整合
  • 原文地址:https://www.cnblogs.com/candyzhmm/p/4783420.html
Copyright © 2011-2022 走看看