CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

高分求救:在设计html(asp.net(c#)版的)编辑器中 远程图片自动上传功能如何实现?

楼主hxz2008(心语)2005-07-07 15:12:08 在 .NET技术 / ASP.NET 提问

在设计html(asp.net(c#)版的)编辑器中   远程图片自动上传功能如何实现?  
  感谢各位老师不吝赐教详解 问题点数:100、回复次数:63Top

1 楼hxyhard(我不能)回复于 2005-07-07 15:15:01 得分 0

关注,找了好久没找到合适的  
   
  Top

2 楼renyu732(Sysinfo)回复于 2005-07-08 01:23:54 得分 0

http://renyu732.cnblogs.com/archive/2005/06/11/172714.htmlTop

3 楼yynice(小楼听雨)回复于 2005-07-08 08:13:52 得分 0

只看过远程图片自动下载的Top

4 楼camelials(星期五)回复于 2005-07-08 08:35:42 得分 0

upTop

5 楼Seeko0(阿 枫(终点又回到起点,到现在我才发现))回复于 2005-07-08 08:35:49 得分 0

FreeTextBox  
   
  上传图片的功能需要更改FreeTextBox-ToolbarItemsScript.js中function   FTB_InsertImage(ftbName)   {    
  if   (FTB_IsHtmlMode(ftbName))   return;  
  editor   =   FTB_GetIFrame(ftbName);  
  editor.focus();  
  //alert("插入图片,或则文件");  
   
   
  //********************************************************************************************此处进行了更改。。。。  
   
  var   imgstr   =new   String();  
  var   url="../include/ImageGallery.aspx";  
   
  //获取服务器地址  
  var   serverUrl=window.location.href;  
  var   pattern   =/(SoftModule\/)/i;  
   
  var   urls=   serverUrl.split(pattern);  
  if(urls.length>0)  
  serverUrl   =urls[0];  
   
  var   newurl   =serverUrl+"Include/Modaldialog.htm?"+url;  
          var   w=window.screen.availWidth   ;  
  var   h=window.screen.availHeight   ;  
          var   s   =window.showModalDialog(newurl,window,"help=no;status=no;resizable=no;dialogWidth:"+w+"px;dialogHeight:"+h+"px;");  
          if(s!=undefined){  
                  imgstr   =   s;  
          }  
   
  //插入图片  
  FTB_InsertText(ftbName,imgstr)  
  //********************************************************************************************重要标记,如何插入一个图片  
          //editor.document.execCommand('insertimage',1,'');  
  }  
  //然后自己写ImageGallery.aspx实现上传的功能Top

6 楼hchxxzx(NET?摸到一点门槛)回复于 2005-07-08 08:39:36 得分 0

以下是一个资料,你可参考一下.另外,以下的编辑器,已经实现了远程图片自动上传功能,虽然是asp写的,但也可参考,你可尝试一下.  
  http://ewebeditor.webasp.net/download.asp  
   
   
   
  现在基于WEB页的HTML的编辑器在新闻系统,文章系统中用得越来越广,一个网页一粘就可以保持原来的样式,同时图片也可以在这个页中保持。但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器并且替换页面上的链接?答案是肯定的。  
  要实现这个功能需要经过三个步骤:  
  一,取得原页中的图片的地址。方法很多,可以用分割字符串,也可以用正则匹配。实践证明用正则匹配最为简单。经过分析图片的地址都保存在<IMG>标签中。我们可以先取得所有这个标签。过程如下:  
  Set   objRegExp   =   New   Regexp'设置配置对象  
  objRegExp.IgnoreCase   =   True’忽略大小写  
  objRegExp.Global   =   True’设置为全文搜索  
  objRegExp.Pattern   =   "<IMG.+?>"'为了确保能准确地取出图片地址所以分为两层配置:首先找到里面的<IMG>标签,然后再取出里面的图片地址后面的getimgs函数就是实现后一个功能的。  
  strs=trim(str)  
  Set   Matches   =objRegExp.Execute(strs)’开始执行配置  
  For   Each   Match   in   Matches  
  ?RetStr   =   RetStr   &getimgs(   Match.Value   )’执行第二轮的匹配  
  Next    
  所有的图片在里面都是这样的src="http://图片的地址",所以可以这样来取得确切的图片地址:  
  function   getimgs(str)  
  getimgs=""  
  Set   objRegExp1   =   New   Regexp  
  objRegExp1.IgnoreCase   =   True  
  objRegExp1.Global   =   True  
  objRegExp1.Pattern   =   "http://.+?"""’取出里面的地址  
  set   mm=objRegExp1.Execute(str)  
  For   Each   Match1   in   mm  
  getimgs=getimgs&"||"&left(Match1.Value,len(Match1.Value)-1)’把里面的地址串起来备用  
  next  
  end   function  
   
  取得了所有的图片的地址,我们就可以进行第二步的操作了。  
  二,下载图片并保存在服务器上。这个又可以分为两个步骤:一个是取得图片的内容,另一个是保存在服务器上。取得图片的内容是通过下面的函数来实现的:  
  function   getHTTPPage(url)  
  on   error   resume   next  
  dim   http  
  set   http=server.createobject("MSXML2.XMLHTTP")‘使用xmlhttp的方法来获得图片的内容  
  Http.open   "GET",url,false  
  Http.send()  
  if   Http.readystate<>4   then    
  exit   function  
  end   if  
  getHTTPPage=Http.responseBody  
  set   http=nothing  
  if   err.number<>0   then   err.Clear    
  end   function  
  取得了图片的内容要保存,给人一种感觉是用FSO来作就可以了,但实际上不行,这样保存程序就会出错,因为FSO不支持流式的文件,所以我们要调用另一个对象:ADO.STREM。具体的过程如下:  
  function   saveimage(from,tofile)  
  dim   geturl,objStream,imgs  
  geturl=trim(from)  
  imgs=gethttppage(geturl)'取得图片的具休内容的过程  
  Set   objStream   =   Server.CreateObject("ADODB.Stream")'建立ADODB.Stream对象,必须要ADO   2.5以上版本  
  objStream.Type   =1'以二进制模式打开  
  objStream.Open  
  objstream.write   imgs'将字符串内容写入缓冲  
  objstream.SaveToFile   server.mappath(tofile),2'-将缓冲的内容写入文件  
  objstream.Close()'关闭对象  
  set   objstream=nothing  
  end   function  
  所以只要用一个循环来把刚才取得的地址中的图片全部保存下来,具体过程如下:  
  arrimg=split(retstr,"||")'分割字串,取得里面地址列表  
  allimg=""  
  newimg=""  
  for   i=1   to   ubound(arrimg)  
  if   arrimg(i)<>""   and   instr(allimg,arrimg(i))<1   then'看这个图片是否已经下载过  
  fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))  
  saveimage(arrimg(i),fname)‘保存地址的函数,过程见上面  
  allimg=allimg&"||"&arrimg(i)'把保存下来的图片的地址串回起来,以确定要替换的地址  
  newimg=newimg&"||"&fname'把本地的地址串回起来  
  end   if  
  next  
  第三步就是替换原来的地址了。具体的过程就是下面了:  
  arrnew=split(newimg,"||")'取得原来的图片地址列表  
  arrall=split(allimg,"||")'取得已经保存下来的图片的地址列表  
  for   i=1   to   ubound(arrnew)'执行循环替换原来的地址  
  strs=replace(strs,arrall(i),arrnew(i))  
  next  
  cctv=strs  
  讲到这里,这个函数的基本过程就是这样了,当然可以对它进行改造就可以实现更多的功能,如:加上图片大小的限制,加上对本地机上的图片下载的限制,以免造成重复下载图片。同时也应该看到这个函数的不足之处是只能处理静态的图片文件,不能适用程序生成的图片。Top

7 楼hxz2008(心语)回复于 2005-07-08 15:07:15 得分 0

非常感谢大家的热心帮助Top

8 楼hxz2008(心语)回复于 2005-07-09 10:52:28 得分 0

欢迎各位高手的到来Top

9 楼hxz2008(心语)回复于 2005-07-11 15:02:59 得分 0

敬请您的关注Top

10 楼SiaoColumn(池水)回复于 2005-07-13 16:43:58 得分 0

关注了许久……Top

11 楼hxz2008(心语)回复于 2005-07-14 10:23:32 得分 0

请您赐教Top

12 楼hxz2008(心语)回复于 2005-07-16 09:10:53 得分 0

helpTop

13 楼codeangel(http://www.wSoft.Net)回复于 2005-07-16 09:49:36 得分 0

Unknow,help   you   up!Top

14 楼qianblue(浅蓝)回复于 2005-07-17 10:58:43 得分 0

自己写吧,也不难Top

15 楼hxz2008(心语)回复于 2005-07-18 08:42:46 得分 0

请您指点一下啊Top

16 楼ye_zi(行到水穷处·坐看云起时)回复于 2005-07-18 09:03:09 得分 0

MARKTop

17 楼qianblue(浅蓝)回复于 2005-07-18 09:28:28 得分 0

先添加引用-COM-Microsoft   Xml   3.0,然后在代码开始处写:  
   
  using   MSXML2;  
   
  下面就是主要的代码:  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {    
    string   Url   =   "http://dotnet.aspx.cc/Images/logoSite.gif";  
    string   StringFileName   =   Url.Substring(Url.LastIndexOf("/")   +   1);  
    string   StringFilePath   =   Request.PhysicalApplicationPath;  
    if(!StringFilePath.EndsWith("/"))   StringFilePath   +=   "/";  
    MSXML2.XMLHTTP   _xmlhttp   =   new   MSXML2.XMLHTTPClass();  
    _xmlhttp.open("GET",Url,false,null,null);  
    _xmlhttp.send("");  
    if(   _xmlhttp.readyState   ==   4   )  
    {  
      if(System.IO.File.Exists(StringFilePath   +   StringFileName))    
        System.IO.File.Delete(StringFilePath   +   StringFileName);  
      System.IO.FileStream   fs   =   new   System.IO.FileStream(StringFilePath   +   StringFileName,   System.IO.FileMode.CreateNew);  
      System.IO.BinaryWriter   w   =   new   System.IO.BinaryWriter(fs);  
      w.Write((byte[])_xmlhttp.responseBody);  
      w.Close();  
      fs.Close();  
      Response.Write   ("文件已经得到。<br><a   href='"   +   Request.ApplicationPath   +   StringFileName   +"'   target='_blank'>");  
      Response.Write   ("查看"   +   StringFileName   +   "</a>");  
    }  
    else  
    Response.Write   (_xmlhttp.statusText);  
    Response.End();  
  }  
  Top

18 楼hxz2008(心语)回复于 2005-07-19 08:37:24 得分 0

感谢您的指点Top

19 楼hxz2008(心语)回复于 2005-07-20 16:14:45 得分 0

欢迎各位Top

20 楼hxz2008(心语)回复于 2005-07-22 15:26:41 得分 0

快来帮忙了Top

21 楼OSCAR_NJU(死刑犯)回复于 2005-07-24 02:25:04 得分 0

我刚刚把freetextbox加上了插入上传图片的按钮,自动生产缩略图。Top

22 楼hxz2008(心语)回复于 2005-07-25 18:07:29 得分 0

欢迎赐教Top

23 楼hxz2008(心语)回复于 2005-07-26 09:55:14 得分 0

快来了Top

24 楼hxz2008(心语)回复于 2005-08-03 22:09:35 得分 0

hellpTop

25 楼SiaoColumn(池水)回复于 2005-08-12 08:57:48 得分 0

upTop

26 楼hxz2008(心语)回复于 2005-09-06 10:31:57 得分 0

欢迎各位不吝赐教Top

27 楼mumushu(木木树)回复于 2005-09-06 11:04:07 得分 0

http://www.lionsky.net/MyWebsite/DownSoft/List.Aspx?ID=238Top

28 楼hxz2008(心语)回复于 2005-09-22 15:51:18 得分 0

还有高招没?Top

29 楼liuqinglq(白菜)回复于 2005-09-22 15:54:06 得分 0

收藏一下Top

30 楼hxz2008(心语)回复于 2005-09-27 16:12:40 得分 0

请教了Top

31 楼freetofly()回复于 2005-10-03 12:50:49 得分 0

什么叫自动上传啊  
  没弄明白  
  在.NET中上传到很容易  
  有个HTML控件就OK啊Top

32 楼powbcom(一搏云天[I CAN])回复于 2005-10-03 13:44:47 得分 0

找一个HtmlEditor3.1的.NET版,里面有一个分析图片和下载图片的功能,我的就是从这里面搞出来的,非常好用!Top

33 楼hxz2008(心语)回复于 2005-10-20 09:51:23 得分 0

欢迎各位的到来Top

34 楼hxz2008(心语)回复于 2005-10-24 16:59:57 得分 0

在设计html(asp.net(c#)版的)编辑器中   远程图片自动上传功能如何实现?  
  感谢各位老师不吝赐教详解  
  Top

35 楼zeusvenus()回复于 2005-11-28 13:22:22 得分 0

用ewebeditor或freetextbox控件Top

36 楼hxz2008(心语)回复于 2005-11-29 08:59:29 得分 0

感谢各位老师不吝赐教详解  
  Top

37 楼hxz2008(心语)回复于 2005-11-29 16:21:36 得分 0

在设计html(asp.net(c#)版的)编辑器中   远程图片自动上传功能如何实现?  
  帮了忙了Top

38 楼SiaoColumn(池水)回复于 2005-11-30 09:14:09 得分 0

顶Top

39 楼hxz2008(心语)回复于 2005-11-30 15:26:31 得分 0

在设计html(asp.net(c#)版的)编辑器中   远程图片自动上传功能如何实现?  
  Top

40 楼vipfenghuang(张伟)回复于 2005-12-07 14:42:22 得分 0

 
  http.post  
   
  http.sendTop

41 楼net_lover(【孟子E章】)回复于 2005-12-07 14:50:53 得分 0

编辑器本身不能实现这个功能,通用的办法是发送到服务器端再进行解析html取出地址,再进行下载保存。  
  在客户端耶可以通过DOM得到img的url,用ajax告知服务器下载到服务器端,本地是没有权限的,Top

42 楼hxz2008(心语)回复于 2005-12-19 10:02:22 得分 0

非常感谢  
  Top

43 楼hxz2008(心语)回复于 2005-12-28 09:43:13 得分 0

大家快来捧场Top

44 楼hxz2008(心语)回复于 2006-01-11 09:20:43 得分 0

热切关注...Top

45 楼tigerhu76(虎虎)回复于 2006-01-18 14:00:18 得分 0

关注Top

46 楼hxz2008(心语)回复于 2006-02-10 14:15:23 得分 0

请各位赐教了Top

47 楼menuvb(戏子,白日做梦)回复于 2006-02-27 13:42:39 得分 0

建议使用web   service来实现远程图片上传  
  这里有示例  
  http://www.codeproject.com/soap/MTOMWebServices.aspTop

48 楼SiaoColumn(池水)回复于 2006-03-17 10:05:30 得分 0

关注了许久...........Top

49 楼SiaoColumn(池水)回复于 2006-03-20 13:55:46 得分 0

给我你的Email发给你Top

50 楼ohyear(From Now On...)回复于 2006-03-21 10:18:22 得分 0

关注此贴!Top

51 楼hxz2008(心语)回复于 2006-03-22 10:12:53 得分 0

hxztzsd@sina.comTop

52 楼ericfine(埃里克)回复于 2006-04-16 01:24:47 得分 0

很简单,用正规找出HTML代码中的<img   src="图片地址">   ,   再用webclient或webrequest下载,再把HTML代码中的图片地址替换掉Top

53 楼webwait(webwei)回复于 2006-04-16 02:04:03 得分 0

关注Top

54 楼hxz2008(心语)回复于 2006-05-18 10:31:18 得分 0

感谢各位的到来  
  Top

55 楼piaoyu228(镜子)回复于 2006-05-31 17:13:48 得分 0

关注Top

56 楼gaoshanshan(高姗姗(姗姗来迟))回复于 2006-05-31 20:19:51 得分 0

WebClient不就下载了,好运Top

57 楼ilovejolly(有些伤感)回复于 2006-06-01 08:24:08 得分 0

markTop

58 楼csdsuper(齐天)回复于 2006-06-01 08:39:01 得分 0

关注Top

59 楼CCjian(默契)回复于 2006-06-05 13:08:27 得分 0

webclient或webrequest(借鉴)Top

60 楼lang11zi(微软菜虫)回复于 2006-06-05 13:29:44 得分 0

看看Top

61 楼dgrwang(探索者)回复于 2006-06-14 13:43:27 得分 0

写编辑器,一般都是用ubb,如图片是[img][/img]  
  你在编辑器提交时,用正则把[img][/img]中的url取出来,来后存到一个数组或,arrylist或hashtable里,然后down下来不就完了Top

62 楼cabee()回复于 2006-06-17 23:35:26 得分 0

upTop

63 楼lupeng8175(行者无疆)回复于 2006-06-30 16:42:13 得分 0

收藏学习Top

相关问题

  • ===>谁有ASP的HTML编辑器?....谢谢....
  • HTML编辑器
  • 大家有什么好的ASP版的HTML在线编辑器?
  • HTML在线编辑器
  • Html编辑器的问题!
  • 100分求html编辑器
  • 求ASP+SQL Server网站开发教程、XML实例及HTML在线编辑器
  • 那有C#的编辑器(不是VC6.0)?
  • 什么系统自带C++编辑器?
  • 100分 求好用的C++ 编辑器

关键词

  • .net
  • asp.net
  • c#
  • 远程
  • 服务器
  • 内容
  • 图片
  • 编辑器
  • 远程图片自动
  • objregexp

得分解答快速导航

  • 帖主:hxz2008

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo