使用内存流方式显示数据库中保存网页的问题(100分)

  • 主题发起人 主题发起人 yangyih007
  • 开始时间 开始时间
Y

yangyih007

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用数据库保存网页以及图片,遇到一个问题:就是使用读取内存的方式直接在<br><br>Twebbrowser打开网页文件,并且将图片保存到一个具体目录,比如:C:/temp/(<br><br>目前我还不知道不使用具体文件就能显示的方法),然后显示.我的问题是:为什么<br><br>使用IE浏览器保存的文件可以有相对路径 比如网页保存为:A:/index.htm,它<br><br>的图片目录就是A:/index.files/ 打开A:/index.htm就可以使用&lt;img src=index.files/06top_5.gif&gt;读出图片,而使用直接在内存显示网页文件就<br><br>必须使用具体的图片位置:比如&lt;img src=A:/001.jpg&gt;.是否应该有更加好的办法<br><br>,不要告诉我连同网页文件一起存入临时目录,这样好像也不行.<br>最后我还想知道:是否可以将图片直接保存到网页缓存,然后读出了,怎样在网页<br><br>源码中读取这个缓存目录?因为如果用程序自己读出来,难道又要用程序自己修改<br><br>网页中的相关地址?然后才显示出来?
 
关注此问题<br>本人也想知道怎么实现
 
路过,看看这个行不行:<br>http://www.delphibbs.com/keylife/iblog_show.asp?xid=606
 
感谢xianjun的回答,不过我看不懂,最好有个例子.你有吗?
 
给你个可以在内存中直接打开网页的方法,我的共享软件用到的方法。<br>uses MsHtml, ActiveX;<br><br>procedure MemoryShowWeb(Web:TWebBrowser; Html:String);<br>Var<br> &nbsp; &nbsp;Data: OleVariant;<br>begin<br> &nbsp; &nbsp;Try<br> &nbsp; &nbsp; &nbsp; &nbsp;if Web.Document&lt;&gt;nil then<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IHTMLDocument2(Web.Document).close<br> &nbsp; &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Web.Navigate('about:blank');<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IHTMLDocument2(Web.Document).designMode:='on';<br> &nbsp; &nbsp; &nbsp; &nbsp;end;<br> &nbsp; &nbsp; &nbsp; &nbsp;Data := VarArrayCreate([0, 0], varVariant);<br> &nbsp; &nbsp; &nbsp; &nbsp;Data[0] := html;<br> &nbsp; &nbsp; &nbsp; &nbsp;IHTMLDocument2(Web.Document).write(PSafeArray(TVarData(Data).VArray));<br> &nbsp; &nbsp; &nbsp; &nbsp;Web.Invalidate;<br> &nbsp; &nbsp;Finally<br> &nbsp; &nbsp; &nbsp; &nbsp;VarClear(Data);<br> &nbsp; &nbsp;end;<br>end;
 
帮顶!<br><br>╭=========================================╮<br><br> &nbsp; 80G海量源代码,控件,书籍全免费狂下不停!<br><br> &nbsp; http://www.source520.com<br> &nbsp; <br> &nbsp; 个人网站站长开发推广同盟,让所有人知道你的世界!<br> &nbsp; <br> &nbsp; http://www.source520.com/search/search.asp<br> &nbsp;<br>╰=========================================╯
 
感谢appfirst,不过你提供的方法我已经知道,我需要可以打开带有图片文件的网页,目前我还没有发现真正能够解决的办法,所以我也就不再做那些尝试,还是保存为具体文件比较好,现在我只是想在网页中使用变量的方式比如&lt;img src=dir+&quot;mypic.jpg&quot;&gt;,这个dir是能够自由更换的(如果需要在打开文件之前修改替换就没有多少意义了),可能java script能够实现,我只是对此一窍不通而已.应该是可以解决这个问题的.
 
阿,兄弟就算JAVA SCRIPT能实现,它也是要替换的,只不过是它帮你做了,自己做还不是一样的。
 
网页存成mht格式再入库
 
感谢appfirst,我也曾经这样干过,不过处理速度变慢了,所以才想问问有什么更加好的办法,如果没有我就直接使用固定的目录来保存,速度很快.效果也很好.但是仍然有遗憾.
 
感谢satanmonkey,你说的办法我也试验过,我认为这个方案不好,因为如果将这些东西打包为mht,是解决了一部分问题,可是新的问题出现:这个文件会很大,影响显示效果,另外不容易删除(如果不想留下垃圾文件),比如只是想保存为一个temp.mht文件然后显示,当需要打开另外一条mht数据,很容易出现因为无法替换这个temp.mht文件而无法正常打开那个数据的情况出现,而如果不打包,文件会很小,删除和替换很方便.显示效果也很好.
 
这样的话你在自己的程序里开个简单的http服务得了.
 
感谢satanmonkey,你的建议已经超过我的水平,能否提供一些可用的代码.
 
indy带现成的http控件啊.好像叫idhttpserver<br><br>另外xianjun提供的使用app的办法也是个解决方案.
 
我将网页文件下面的所有文件都打包压缩起来存到数据库了。所以就可以正常显赤了。
 
感谢satanmonkey,那个方案我看不懂,如果有个例子研究一下还可以.如果可以为什么还有这么多人无法解决不需要具体文件直接内存方式显示图片的功能?所以如果没有具体例子我不想在这个地方浪费时间.<br><br>chinaking,我现在也是打包进入数据库,显示的时候将文件保存进入一个临时目录,导入数据库前将网页源文件的地址改为:临时目录+文件名称,这样可以正常显示,但是这个临时目录却是固定的,我觉得这样不好,所以才提出这个问题,你是这么解决的,能否告知,先谢谢了!
 
这个不会变成送分题吧?没有高手吗?
 
别人告诉你app的方案,你说你看不懂.就没办法了.再给你点 app的资料.<br>http://www.euromind.com/iedelphi/app.htm
 
后退
顶部