var
exeFilestream:Tfilestream;
with Query1 do
try
exeFilestream:=TFileStream.Create('D:\aaa.zip',fmopenRead);//打开文件
insert;
FieldStrm:=Query1.CreateBlobStream(Query1.FieldByName('filestream_ZXSJ'),bmWrite);
GetMem(Buffer,BufSize);
fieldbyname('orderid').AsString:=orderid;
fieldbyname('filestream_name').AsString:=orderid;
try
Counter:=exeFilestream.Size;
size_tmp:=exeFilestream.Size;
while Counter<>0 do
begin
if Counter>BufSize then
N:=BufSize
else
N:=Counter;
exeFilestream.ReadBuffer(Buffer^,N);
FieldStrm.WriteBuffer(Buffer^,N);
Dec(Counter,N);
Application.ProcessMessages;
end;
finally
FreeMem(Buffer,BufSize);
FieldStrm.Free;
end;
post;
showmessage('上传成功!');
finally
exeFilestream.Free;
end;
end;这是我上传到数据库的程序,有暂停按纽,当点了暂停之后,就停止往数据库中写,当点继续的时候,就继续传,不是重新传,是接着上次的传,请问怎么用代码实现?
exeFilestream:Tfilestream;
with Query1 do
try
exeFilestream:=TFileStream.Create('D:\aaa.zip',fmopenRead);//打开文件
insert;
FieldStrm:=Query1.CreateBlobStream(Query1.FieldByName('filestream_ZXSJ'),bmWrite);
GetMem(Buffer,BufSize);
fieldbyname('orderid').AsString:=orderid;
fieldbyname('filestream_name').AsString:=orderid;
try
Counter:=exeFilestream.Size;
size_tmp:=exeFilestream.Size;
while Counter<>0 do
begin
if Counter>BufSize then
N:=BufSize
else
N:=Counter;
exeFilestream.ReadBuffer(Buffer^,N);
FieldStrm.WriteBuffer(Buffer^,N);
Dec(Counter,N);
Application.ProcessMessages;
end;
finally
FreeMem(Buffer,BufSize);
FieldStrm.Free;
end;
post;
showmessage('上传成功!');
finally
exeFilestream.Free;
end;
end;这是我上传到数据库的程序,有暂停按纽,当点了暂停之后,就停止往数据库中写,当点继续的时候,就继续传,不是重新传,是接着上次的传,请问怎么用代码实现?
断点续传就是要将你上次传递的文件的位置保存起来,如果断开了
下次再传递的时候,获得这个文件位置,然后指针移动到这个位置开始继续传输