PB中对文件操作进行数据库的存取

我们对文件一类的东西存入数据库,一般就是存放一个文件的相对路径,到要使用该文件是就根据该相对路径进行相应的获取,而我现在要做的是通过PB中的数据流的方式把文件以二进制的方式进行存取。

该方法通过数据流的形式读取文件并返回一个BLOB数据类型
可以通过pb中的Updateblob对Image字段进行更新

//====================================================================
// Function: f_readfile()
//--------------------------------------------------------------------
// Description: 读取相应的文件信息
//--------------------------------------------------------------------
// Arguments:ps_file(包含完整路径名的文件)
//--------------------------------------------------------------------
// Returns:  blob
//--------------------------------------------------------------------
// Author: SX  Date: 2007年02月01日 16时00分00秒
//--------------------------------------------------------------------
// Modify History:
// 
//====================================================================
Blob Lb_File,Lb_FileTemp
Long Ll_FileLen
Integer Li_FileNum,i
Long Ll_Loops,Ll_Bytesread,Ll_NewPos

//判断文件大小
Ll_FileLen = FileLength(ps_file)
Li_FileNum = FileOpen(ps_file,StreamMode!,Read!,LockRead!)

IF Ll_FileLen > 32765 THEN
   IF Mod(Ll_FileLen,32765) = 0 THEN
      Ll_Loops = Ll_FileLen/32765
   ELSE
     Ll_Loops = (Ll_FileLen/32765) + 1
   END IF
ELSE
   Ll_Loops = 1
END IF

// Read the file
Ll_NewPos = 1
FOR i = 1 to Ll_Loops 
   Ll_Bytesread = FileRead(Li_FileNum, Lb_FileTemp)
   Lb_File = Lb_File + Lb_FileTemp
   Ll_NewPos = Ll_NewPos + Ll_Bytesread
   FileSeek(li_FileNum, Ll_NewPos, FromBeginning!)
NEXT

FileClose(Li_FileNum)

Return lb_File




该方法从库中的Image字段中以数据流的形式把文件读取出来并重新组织文件

//====================================================================
// Function: F_WriteFile()
//--------------------------------------------------------------------
// Description: 读取数据库中的文件并写出
//--------------------------------------------------------------------
// Arguments:ps_file(文件及其完整路径)
//--------------------------------------------------------------------
// Returns:  None
//--------------------------------------------------------------------
// Author: SX  Date: 2007年02月08日 16时00分00秒
//--------------------------------------------------------------------
// Modify History:
// 
//====================================================================
Long Ll_FileLen
Long Ll_Pos,Ll_Bytes
Integer i,Li_Loops,Li_FileNum

Blob Lb_Temp

Ll_FileLen = Len(pb_fileblob)

IF Ll_FileLen > 32765 THEN
   IF Mod(Ll_FileLen,32765) = 0 THEN
   Li_Loops = Long(Ll_FileLen/32765)
ELSE
   Li_Loops = Long(Ll_FileLen/32765) + 1
END IF
   Li_FileNum = FileOpen(ps_file,StreamMode!, Write!, Shared!, Replace!)
 
Ll_Pos = 1
FOR i = 1 TO Li_Loops
   Lb_Temp = BlobMid(pb_fileblob,(i - 1) * 32765 + 1,32765)
   Ll_Bytes = FileWrite(li_FileNum,Lb_Temp)
   Ll_Pos = Ll_Pos + Ll_Bytes
   FileSeek(li_FileNum, Ll_Pos, FromBeginning!)
NEXT
   FileClose(li_FileNum)
ELSE
   li_FileNum = FileOpen(ps_file, StreamMode!, Write!, Shared!, Replace!)
   FileWrite(li_FileNum,pb_fileblob)
   FileClose(li_FileNum)
END IF

转载于:https://www.cnblogs.com/hmilycsharp/archive/2007/03/10/670034.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值