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)$";
 
; 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
eWebeditor编辑器上传图片路径错误解决方法[疑难杂症]【转,作者:unvs】的更多相关文章
- vue webpack打包后.css文件里面的背景图片路径错误解决方法
资源相对引用路径 问题描述 一般情况下,通过webpack+vuecli默认打包的css.js等资源,路径都是绝对的. 但当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static ...
- mysql Access denied for user root@localhost错误解决方法总结(转)
mysql Access denied for user root@localhost错误解决方法总结(转) mysql Access denied for user \'root\'@\'local ...
- Eclipse 出现Some sites could not be found. See the error log for more detail.错误 解决方法
Eclipse 出现Some sites could not be found. See the error log for more detail.错误 解决方法 Some sites could ...
- CAS SSO:汇集配置过程中的错误解决方法
本教程为gevin.me原创文章,转载请注明: CAS SSO:配置过程中的错误解决方法 | Gevin’s Blog 本文将收集在配置CAS SSO遇到的所有错误,希望对大家有帮助,也方便下次搭建的 ...
- SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法
使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 .下面是解决方案的演示示例: 这个是实体类,里面createDate就是java ...
- ubuntu 环境下pycharm的 安装与激活教程 以及错误解决方法
1. 基本安装: 1.1 打开Ubuntu的应用市场,并在搜索栏搜索pycharm,结果如下图所示 1.2 选择pro版本进行安装,结果如下图所示: 1.3打开安装后的pycharm,如果出现下图所示 ...
- jack server 常见错误解决方法【转】
本文转载自:https://blog.csdn.net/qq_27061049/article/details/70156200 jack 服务常见错误解决方法 当你编译Android时,你不需要修改 ...
- 安裝jpeg-6b png error错误解决方法
安裝jpeg-6b png error错误解决方法 默认安裝jpeg-6b shell> wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar. ...
- (C#)asp_net调试错误解决方法收集(1)
(C#)asp_net调试错误解决方法收集(1) 2007-11-2309:20 一.异常详细信息:System.InvalidOperationException:对于不返回任何键列信息的Selec ...
随机推荐
- Android 中SimpleDateFormat的使用注意
以前在程序中总这样使用 SimpleDateFormat sdf=new SimpleDateFormat("hh:mma"); date1=sdf.parse(alertT ...
- 当年的文曲星cc800
你还记得当年的cc800吗?还记得黄金英雄传说吗?还记得用cc800编程的日子吗... 今天突然想起了我的cc800,好怀念那段爬在家里的阳台的木架子上,挠着头,编程序的日子...可惜,当时比较穷,没 ...
- Linux系统排查3——I/O篇
当磁盘无法写入的时候,一般有以下可能: 文件系统只读 磁盘已满 I节点使用完 一. 遇到只读的文件系统 文件系统自动设置成只读可能是系统自我保护的一种机制,因此需要实现弄清究竟是什么原因造成了文件系统 ...
- Greedy:Protecting the Flowers(POJ 3262)
保护花朵 题目大意:就是农夫有很多头牛在践踏花朵,这些牛每分钟破坏D朵花,农夫需要把这些牛一只一只运回去,这些牛各自离牛棚都有T的路程(有往返,而且往返的时候这只牛不会再破坏花),问怎么运才能使被践踏 ...
- [小细节,大BUG]记录一些小问题引起的大BUG(长期更新....)
[小细节,大BUG] 6.问题描述:当从Plist文件加载数据,放入到tableView中展示时,有时有数据,有时又没有数据.这是为什么呢?相信很多大牛都想到了:我们一般将加载的数据,转换成模型,放入 ...
- LeetCode之LRU Cache 最近最少使用算法 缓存设计
设计并实现最近最久未使用(Least Recently Used)缓存. 题目描述: Design and implement a data structure for Least Recently ...
- Solr常用查询语法笔记
1.常用查询 q - 查询字符串,这个是必须的.如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京) fq - (filter query)过虑查询,作用:在q查询符 ...
- Ubuntu could not write bytes broken pipe
一.环境变量问题 1 到登录界面的时候,进入命令行模式: alt+ctrl+F1 2 登录 3 修改环境变量(当我输入ls的时候 竟然没有找到命令,然后果断的知道是环境变量的事情,于是改之!) 4 ...
- [译] Web API 之 简介
事实上,MVC 框架本身已经提供了构建REST风格服务的基础,而Web API 只是让你可以更加容易和快捷的构建REST服务. 特性 基于约定的 CRUD Actions: 自动按照HTTP的acto ...
- Android开发代码规范(转)
Android开发代码规范 1.命名基本原则 在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的.比如,大小写的区分,使用不同字母开头等等.但究其本,追其源,在为一个资源其名称 ...