線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:966
推到 Plurk!
推到 Facebook!

三层上传文件时,第二次上传会报内存错误

尚未結案
踏雪冬思
一般會員


發表:6
回覆:2
積分:1
註冊:2007-10-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-07-05 18:09:01 IP:58.46.xxx.xxx 訂閱
三层上传文件时,第一次上传正常,第二次上传客户端会报内存错误,第三次上传又正常,请帮我看看是什么原因?


服务端代码:
[code delphi]
function TServerMethods1.PutFile(AfileName,SaveFolder: string; Stream: TStream): Boolean;
const //上传
BufSize = $F000;
var
Buffer: TBytes;
ReadCount: Integer;
FS: TFileStream;
begin

if not DirectoryExists(AppPath SaveFolder) then
CreateDir(AppPath SaveFolder);
try
FS := TFileStream.Create(AppPath SaveFolder AfileName, FmCreate);
if Stream.Size = -1 then // 大小未知则一直读取到没有数据为止
begin
SetLength(Buffer, BufSize);
repeat
ReadCount := Stream.Read(Buffer[0], BufSize);
if ReadCount > 0 then
FS.WriteBuffer(Buffer[0], ReadCount);
if ReadCount < BufSize then
break;
until ReadCount < BufSize;
end
else // 大小已知则直接复制数据
FS.CopyFrom(Stream, 0);
Result := True;
FMan.Insertlog('客户端上传文件成功:' AppPath AfileName);
Except
FMan.Insertlog('客户端上传文件失败:' AppPath AfileName);
Result := False;
end;
FreeAndNil(FS);
end;
[/code]

客户端上传调用代码:
[code delphi]
Function TDtM.PutFile(faName,toName: String):Boolean;
var aSeream:TStream;
begin
try
aSeream:=TStream.Create;
aSeream:=TfileStream.Create(faName,fmShareDenyNone);
Result:=aiapp.PutFile(toName,'file\',aSeream); //这一行在第二次上传时会报内存错误。

Except
end;
FreeAndNil(aSeream);
end;
[/code]
系統時間:2024-04-26 6:35:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!