悍匪

回忆过去,展望未来......
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

        最近找在线编辑器,以前一直用FckEditor,发现有些地方还是用不习惯,图片上传路径老有问题,传上去了但是是个XX,不知道是我配置错误还是杂滴。虽然不影响使用,但是后台用户上传时候不能预览还是有点别扭,所以胡乱找了下,又用以前用过的FreeTextBox
        开始感觉不错,后面编辑部人无意说到上传图片后还需要双击图片才能返回编辑器的编辑界面,而且如果图片多的话会造成使用极大的不方便,所以个人就进行改革,准备改成只要点上传,上传后自动返回编辑界面,并且显示上传的图片。
        开始干活:
        1、翻出FreeTextBox编辑器带的上传页面:ftb.imagegallery.aspx
        2、仔细想下,如果点上传,上传完毕自动返回编辑界面而且显示图片这个跟那个事件的过程一样那?这样就想起,原本是点击编辑器的图片按钮,然后加载设置的图片路径下的文件夹以及上传过的图片,上传图片后,该图片又被加载进了当前窗口,双击该图片,就返回了编辑器界面,而且在编辑器中显示出图片。那我需要做的是不是要跟双击图片的事件过程一样?这样就好办了。
        3、找到编辑器双击图片事件的代码:

public void DisplayImages() {} 

在该方法中加载上传图片路径下的文件夹跟图片。又发现了方法中代码:

myImageHolder.Attributes["ondblclick"]="returnImage('" + ImageFileLocation.Replace("\\","/"+ "','" + myImage.Width.ToString() + "','" + myImage.Height.ToString() + "');"
这个就是操作双击图片时返回编辑器的脚本。returnImage函数有3个参数 路径、图片高、图片宽,这样就明白了。
        4、找到上传图片的代码:
public void UploadImage_OnClick(object sender, EventArgs e) {}
        在上传完图片代码处加上以下代码:
//ReadWriteConfig 是我自己定义的类,用来读取显示图片的路径,如:http://127.0.0.1/Images/,可以根据自己需要,也可以不要。这个纯属自己需要才加上。
//CurrentImagesFolder.Value 该页面控件的属性

ReadWriteConfig config 
= new ReadWriteConfig();
config.ConfigType 
= (int)ConfigFileType.WebConfig;
string imagePath = config.readConfigDoc("UpLoadImage");
StringBuilder sb 
= new StringBuilder();
System.Drawing.Image myImage 
= System.Drawing.Image.FromFile(UploadFileDestination + UploadFileName);
string AppPath = imagePath + CurrentImagesFolder.Value + "\\" + UploadFileName;
                        
sb.Append(
"<script>");
sb.Append(
"returnImage('" + AppPath.Replace("\\""/"+ "',");
sb.Append(
"'" + myImage .Width.ToString()+ "',");
sb.Append(
"'" + myImage .Height.ToString()+ "');</");
sb.Append(
"script>"); 
ClientScript.RegisterStartupScript(
typeof(string), "add", sb.ToString());
        这样就大功告成了。
        感觉这个编辑器加载文件与文件夹时有点慢,不知道是电脑原因还是其它,不管了。其实还可以加一些功能的,比如图片多了,需要对文件夹进行分类,这样就可以加个对文件夹进行新增与删除的功能了。虽然不知道实用价值多大,呵呵,但是多动脑筋多动手嘛。这个才是开发人员的宗旨。
        说多了。。。这个只是个人看法,不同意的可以砸石头,鸡蛋。