首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

上传文件的有关问题

2012-02-12 
上传文件的问题procedureTForm1.Button1Click(Sender:TObject)constBufSize$F000varCounter,N:Integer

上传文件的问题
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”是怎么回事?


[解决办法]
以上代码纯属垃圾。
只要这几句就可以了
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;

热点排行