说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何在数据库中存放avi文件-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
如何在数据库中存放avi文件-Delphi资料

对blob字段的操作只能通过流操作实现,即根据需要先创建一个流,这个流可能是内存流或者是文件流,也可能是其他类型的流。这里流是操作BLOB的通道:通过特定的操作,将BLOB的数据和流中的数据交换,然后再对流数据处理

var

filename:string;

//这里是从系统中取得一个临时文件

function GetTemporaryFileName:string;

//$IFNDEF WIN32

const MAX_PATH=144;

//$ENDIF

var

//$IFDEF WIN32

lppathBuffer:PChar;

//$ENDIF

lpbuffer:PChar;

begin

GetMem(lpBuffer

MAX_PATH);

//$IFDEF WIN32

GetMem(lpPathBuffer

MAX_PATH);

GetTempPath(MAX_PATH

lpPathBuffer);

GetTempFileName(lpPathBuffer

'tmp'

0

lpBuffer);

FreeMem(lpPathBuffer

MAX_PATH);

//$ELSE

GetTempFileName(GetTempDrive('C')

'tmp'

0

lpBuffer);

//$ENDIF

result:=StrPas(lpBuffer);

FreeMem(lpBuffer

MAX_PATH);

end;

//将一个AVI文件写到一个BLOB字段中

Procedure TForm1.Button1Click(Sender:TObject);

var

FileStream:TFileStream;// 将入的AVI文件

BlobStream:TBlobStream;//保存的BLOB流

begin

Application.ProcessMessage;

Button1.Enabled:=false;

Button2.Enabled:=false;

FileStream:=TFileStream.Create('C:\PROGRA~1\BORLAND\DELPHI~1\DEMOS\COOLSTUF\COOL.AVI'

fmOpenRead);

Table1.Edit;

//为Table1AVI字段创建一个BLOBSTREAM

BlobStream:=TBlobStream.Create(Table1AVI

bmReadWrite);

//移动到STREAM的首位

BlobStream.Seek(0

soFromBeginning);

//清空数据流

BlobStream.Truncate;

//将FILESTREAM的内容拷贝到BLOBSTREAM

BlobStream.CopyForm(FileStream

FileStream

size);

//释放流

FileStream.Free;

BlobStream.Free;

//添加记录

Table1.Post;

//使buttons可用

Button1.Enabled:=true;

Button1.Enabled:=true;

end;

// 从BLOB字段中读取一个AVI,然后播放这个文件

Procedure TForm1.Button2Click(Sender:TObject);

var

FileStream:TFileStream;

BlobStream:TBlobStream;

begin

//为AVI字段创建BLOB数据流

BlobStream:=TBlobStream.Create(Table1AVI

bmRead);

if BlobSteam.Size=0 then begin

BlobStream.Free;

Exit;

end;

// 关闭media player

MediaPlayer1.Close;

//重值文件名

MediaPlayer1.FileName:='';

//刷新显示窗口

MediaPlayer1.Display:=Panel1;

Panel1.Refresh;

//创建前删除同名的临时文件

if FileName<>'' then

DeleteFile(FileName);

//设置临时文件名

FileName:=GetTemporaryFileName;

//为临时文件创建文件流

FileStream:=TFrileStream.Create(FileName

fmCreate or fmOpenWrite);

//拷贝BLOB到临时文件

FileStream.CopyFrom(BlobStream

BlobStream.Size);

//释放流

FileStream.Free;

BlobStream.Free;

//设置Media Player播放AVI文件

MediaPlayer1.FileName:=filename;

MediaPlayer1.DeviceType:=dtAviVideo;

MediaPlayer1.Open;

MediaPlayer1.Play;

end;

procedure TForm1.FormDestroy(Sender:TObject);

begin

//取消临时文件和media player的关联

MediaPlayer1.Close;

MediaPlayer1.FileName:='';

//删除临时文件

if fileName<>'' then

DeleteFile(FileName);

end;

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘