procedure TForm1.Button1Click(Sender: TObject);
const
BufSize = $F000;
var
Counter, N: Integer;
Buffer: PAnsiChar;
FieldStrm: TStream;
rmFilestream:Tfilestream;
begin
rmFilestream:=TFileStream.Create( 'd:\2.exe ',fmopenRead);
try
ADOQuery1.Edit;
TBlobField(ADOQuery1.FieldByName( 'c_blob ')).LoadFromStream(rmFilestream);
FieldStrm := ADOQuery1.CreateBlobStream(ADOQuery1.FieldByName( 'c_blob '), bmWrite);
GetMem(Buffer, BufSize);
try
Counter := rmFilestream.Size; ProgressBar1.Position := 0;
ProgressBar1.Max := Counter div BufSize; while Counter <> 0 do
begin
if Counter > BufSize then
N := BufSize
else
N := Counter;
rmFilestream.ReadBuffer(Buffer^, N);
FieldStrm.WriteBuffer(Buffer^, N);
Dec(Counter, N);
ProgressBar1.Position := ProgressBar1.Position + 1;
Application.ProcessMessages;
end;
finally
FreeMem(Buffer, BufSize);
FieldStrm.Free;
end;
ADOQuery1.Post;
finally
ProgressBar1.Position := ProgressBar1.Max;
rmFilestream.Free;
end;
end;
//---------------------------------------------------
网上看到一个上传文件的例子,rmFilestream.ReadBuffer(Buffer^, N);
怎么老是这句出错?提示“stream read error”是怎么回事?
const
BufSize = $F000;
var
Counter, N: Integer;
Buffer: PAnsiChar;
FieldStrm: TStream;
rmFilestream:Tfilestream;
begin
rmFilestream:=TFileStream.Create( 'd:\2.exe ',fmopenRead);
try
ADOQuery1.Edit;
TBlobField(ADOQuery1.FieldByName( 'c_blob ')).LoadFromStream(rmFilestream);
FieldStrm := ADOQuery1.CreateBlobStream(ADOQuery1.FieldByName( 'c_blob '), bmWrite);
GetMem(Buffer, BufSize);
try
Counter := rmFilestream.Size; ProgressBar1.Position := 0;
ProgressBar1.Max := Counter div BufSize; while Counter <> 0 do
begin
if Counter > BufSize then
N := BufSize
else
N := Counter;
rmFilestream.ReadBuffer(Buffer^, N);
FieldStrm.WriteBuffer(Buffer^, N);
Dec(Counter, N);
ProgressBar1.Position := ProgressBar1.Position + 1;
Application.ProcessMessages;
end;
finally
FreeMem(Buffer, BufSize);
FieldStrm.Free;
end;
ADOQuery1.Post;
finally
ProgressBar1.Position := ProgressBar1.Max;
rmFilestream.Free;
end;
end;
//---------------------------------------------------
网上看到一个上传文件的例子,rmFilestream.ReadBuffer(Buffer^, N);
怎么老是这句出错?提示“stream read error”是怎么回事?
只要这几句就可以了
rmFilestream:=TMemoryStream.Create( 'd:\2.exe ');
try
rmFilesStream.Seek(0,0);
ADOQuery1.Edit;
TBlobField(ADOQuery1.FieldByName( 'c_blob ')).LoadFromStream(rmFilestream);
ADOQuery1.Post;
finally
rmFilestream.Free;
end;