hur.cn - 华软网

 热门搜索

求从blob字段读取各种文件的代码

  作者:未知    来源:网络    更新时间:2018/10/11
rt
------华软网友回答------
忘说了,blob字段存储着不同的资料
------华软网友回复------
selectblob blob字段 into :blb from 表 where .... ;
然后用filewrite把blob的内容写到资料中,如果资料blob>32k 则还写个循环每次写入32k数据
------华软网友回复------
楼上,假定内外存储几十种资料,程序还要判断是什么资料,再打开。
没有直接打开的方法?
------华软网友回复------
一般你存进数据库时,应该建一个字段保存原来的资料名的(至少应该保存资料的扩展名),以后读出来的时候就根据这个资料名来决意用什么程序打开!
------华软网友回复------
一般ole control支持直接把blob变量赋给它的
ole.ObjectData = blb_1

但由于你的资料类型不同,不能用统一种ole控件来打开所有资料(至少我不知道是否有一种通用的方法能用一个ole来打开任意一种类型的资料)

所以要先把blob写到硬盘上,再调用windows程序打开,
方法1:
在你的目录里建立一个show.bat批措置惩罚资料,这个资料里就一句话
%1
然后在你的pb里这样用,run("show.bat c:\123.jpg",Minimized! )
这样windows将会调用系统默许的程序来打开你指定的资料

方法2, 根据资料的扩展名到注册表能够找到默许的打开程序,然后用
FUNCTION ulong ShellExecute(ulong hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,ulong nShowCmd) LIBRARY "shell32.dll" ALIAS FOR "ShellExecuteA"
这个API来运路程序,运行你想打开的资料




------华软网友回复------
lzheng2001(1加1)说得对,您试试。
------华软网友回复------
这类方法也能够用默许方式打开资料.
FUNCTION ulong ShellExecute(ulong hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,ulong nShowCmd) LIBRARY "shell32.dll" ALIAS FOR "ShellExecuteA"

string Null
setnull(Null)
ShellExecute handle(w_1), "open", "c:\a.doc", Null, Null, 3

------华软网友回复------
参照一下吧:
Blob lb_pic,lb_write
Long ll_length
Int li_c,li_i,li_qs,li_len,li_mod
string ls_filename,ll_no


selectblob picture
into :lb_pic
from t_health
where no= :select_no;

ll_length = Len(lb_pic)
IF ll_length<1 THEN RETURN

li_c = ll_length/32765
li_mod = Mod(ll_length,32765)
IF li_mod>0 THEN li_c++

ls_filename = "aaa.jpg"
li_FileNum = FileOpen(ls_filename,StreamMode!,write!,lockWrite!,replace!)
FOR li_i=1 to li_c
li_qs = (li_i - 1) * 32765 + 1
IF li_i<li_c THEN
li_len = 32765
ELSE
li_len = li_mod
END IF
lb_write = blobmid(lb_pic,li_qs,li_len)
FileWrite(li_fileNum,lb_write)
NEXT
fileclose(li_filenum)

------华软网友回复------
好贴,留个记号
------华软网友回复------
study
------华软网友回复------
studystudystudystudystudy      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。