关于ocx控件如何打开服务器端的文件的问题……

leolee 2000-08-07 08:22:00
我已注册在客户端的控件,需要打开服务器上的一个文件,在局域网中用物理路径打开是没问题,但放到internet上后,使用了相对路径,这时控件就无法识别路径,可能与设计控件的时候没考虑到有关,那我该如何解决这个问题呢?我试着在object标记的data属性里设置了下载文件的路径和文件名,但文件下在到了客户端后,我又如何用该控件打开呢?我知道下载后放在了临时文件夹里,但控件在用客户端的路径(c:\windows\temprory inter……)打开时,还是出错。
...全文
562 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shines77 2000-08-11
  • 打赏
  • 举报
回复
是什么文件啊,能不能做进资源文件啊?那就省事了……,
mrssl 2000-08-10
  • 打赏
  • 举报
回复
几种方式补充:
1、让服务器提供FTP服务
让OCX通过FTP控件下载该文件到指定目录下。
eg.
.....
NMFTP1.UserID := FUserName;
NMFTP1.Password := FPassWord;
Nmftp1.Host := WebserverAddress;
NMFTP1.Connect ;
NMFTP1.Mode(MODE_ASCII);
NMFTP1.Download(TlbFile, SysTempDir+'\'+TlbFile);
NMFTP1.Disconnect ;
....

2、把文件以二进制的BLOB字段存在数据库服务器上.
以流(stream)方式对其操作,
eg.
......
docStream:=TADOBlobStream.Create(TBlobField
(QrQuarityDoc.FieldByName('doc')),bmread);
tempstream:=TMemoryStream.Create ;
tempstream.LoadFromStream(docStream);
tempstream.SaveToFile(SysTempDir+'\'+docname);
.....

3、做一个DCOM(Socket)应用服务器(AppServer),
AppServer 响应Client的请求,下载file到Client 的指定目录下。

另外:可以通过API来指定temp目录。

eg.
function SysTempDir: String;
var
pc: Array[0..MAX_PATH] of Char;
begin
GetTempPath(MAX_PATH, pc);
Result := pc;
end;

但是,当OS为WIN2000时该temp目录不是 winnt\temp 下,
而是在当前Login用户的temp下 eg.\Documents and Settings\administrator
\Local Settings\Temp ,导致不同的用户login,其最终结果不一样。
leolee 2000-08-09
  • 打赏
  • 举报
回复
mrssl:
方式一:对我来说不太可行,ocx在设计的时候没考虑到路径的问题,用的都是本地绝对路径。
方式二:我没看懂,能具体一点吗?
方式三:我用了客户端的msinet.ocx,可以在vb中实现图片的下载,但嵌入网页后,代码就出错了,都是语句未结束错误。能否告知错误的原因?代码如下:
<html>
<body>
<object classid="clsid:48E59293-9880-11CF-9754-00AA00C00908" id="Inet1" width="38" height="38">
<param name="_ExtentX" value="1005">
<param name="_ExtentY" value="1005">
<param name="_Version" value="393216">
<param name="AccessType" value="0">
<param name="Protocol" value="1">
<param name="RemoteHost" value>
<param name="RemotePort" value="80">
<param name="URL" value>
<param name="Proxy" value>
<param name="Document" value>
<param name="UserName" value>
<param name="Password" value>
<param name="RequestTimeout" value="60">
</object>
</p>

<p> 
</p>

<script language="vbscript">

funtion downfile()

If Inet1.StillExecuting = False Then

Dim strURL

Dim bData

Dim intFile

strURL = "http://lnf&zgf/myweb/00000081400010601001.ima"'我的虚拟路径(pws)

intFile = FreeFile()

bData = Inet1.OpenURL(strURL,1)
Open "C:\windows\temp\00000081400010601001.ima" For Binary Access Write As #intFile

Put #intFile, , bData()

Close #intFile

Else

MsgBox "busy....."

End If

end function

</script>

<input type="button" value="按钮" name="B3" onclick="downfile()">

</body>

</html>
这段代码在vb中是可以运行的,变量改改。
最后能否告知如何可以访问到C:\WINDOWS\Temporary Internet Files下的文件,或把文件拷到
temp下,vbscript的代码有这方面的功能吗?或者javascript?
leolee 2000-08-09
  • 打赏
  • 举报
回复
xubin_sh:
你可能误会我的意思了,我不是要下载ocx,而是其他的文件,使用data也能下载,但他会下栽到
temprory internet files文件夹下,能否指定它的(data属性)下载路径吗?我想下载到temp文件夹下。
xubin_sh 2000-08-09
  • 打赏
  • 举报
回复
需要codebase,指明从那台服务器上下载
mrssl 2000-08-08
  • 打赏
  • 举报
回复
提议几种方式,供参考
1、让服务器提供FTP服务
先让OCX通过FTP方式现在要打开的文件。
2、把文件以BLOB字段放在服务器first loadfrom blobfield then open it .
3、做一个应用服务器(appserver),appserver 响应Client的请求,下载到Client ,
then open it

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧