下面是我在网上找到的二种方法,可全部不能用。小于48K时没有问题,
只要大于48K就全把服务器CPU时间全部吃掉,而且一直到超时为止,大家帮
忙看一下那里出错了,我是水平太差,实在找不出错在那儿了。先行谢过!第一种方法:
var
Strm:TMemoryStream;
Size:Integer;
Buffer:Array [0..8192-1] of Byte;
TotalBytes:Integer;
begin
try
Strm:=TMemoryStream.Create;
Strm.Write(PChar(Request.Content)^,Length(Request.Content));
TotalBytes:=Request.ContentLength - Length(Request.Content);
while TotalBytes>0 do
begin
Size:=Request.ReadClient(Buffer[0],High(Buffer)+1);
if Size<=0 then break;
Strm.Write(Buffer[0],Size);
TotalBytes:=TotalBytes-Size;
end;
Response.Content := '<H3>文件上传成功。</H3>';
finally
Strm.Free;
end;
Handled:=true;
end;第二种方法:
var
TotalBytes : DWORD;
AvailableBytes : DWORD;
ExtraBytes : DWORD;
ActualBytesRead : DWORD;
ExtraBytesRead : DWORD;
pBuffer : PChar;
extBuffer : PChar;
Strm : TMemoryStream;
begin
try
TotalBytes := Request.ContentLength;
GetMem(pBuffer, TotalBytes);
pBuffer^ := Chr(0);
Strm := TMemoryStream.Create;
try
AvailableBytes := Length(Request.Content);
pBuffer := PChar(Request.Content);
Strm.Write(pBuffer^,AvailableBytes);
if TotalBytes > AvailableBytes then
begin
ExtraBytes := TotalBytes - AvailableBytes;
GetMem(extBuffer, ExtraBytes);
extBuffer^ := Chr(0);
ExtraBytesRead := 0;
repeat
ActualBytesRead := Request.ReadClient(extBuffer^,ExtraBytes - ExtraBytesRead);
Strm.Write(extBuffer^,ActualBytesRead);
Inc(ExtraBytesRead, ActualBytesRead);
until (ExtraBytes - ExtraBytesRead )= 0;
end;
Response.Content := '<H3>文件上传成功。</H3>';
finally
Strm.Free;
end;
except
on E : Exception do
Response.Content := '<H3>出错!</H3><BR>' + E.Message;
end;
end;
只要大于48K就全把服务器CPU时间全部吃掉,而且一直到超时为止,大家帮
忙看一下那里出错了,我是水平太差,实在找不出错在那儿了。先行谢过!第一种方法:
var
Strm:TMemoryStream;
Size:Integer;
Buffer:Array [0..8192-1] of Byte;
TotalBytes:Integer;
begin
try
Strm:=TMemoryStream.Create;
Strm.Write(PChar(Request.Content)^,Length(Request.Content));
TotalBytes:=Request.ContentLength - Length(Request.Content);
while TotalBytes>0 do
begin
Size:=Request.ReadClient(Buffer[0],High(Buffer)+1);
if Size<=0 then break;
Strm.Write(Buffer[0],Size);
TotalBytes:=TotalBytes-Size;
end;
Response.Content := '<H3>文件上传成功。</H3>';
finally
Strm.Free;
end;
Handled:=true;
end;第二种方法:
var
TotalBytes : DWORD;
AvailableBytes : DWORD;
ExtraBytes : DWORD;
ActualBytesRead : DWORD;
ExtraBytesRead : DWORD;
pBuffer : PChar;
extBuffer : PChar;
Strm : TMemoryStream;
begin
try
TotalBytes := Request.ContentLength;
GetMem(pBuffer, TotalBytes);
pBuffer^ := Chr(0);
Strm := TMemoryStream.Create;
try
AvailableBytes := Length(Request.Content);
pBuffer := PChar(Request.Content);
Strm.Write(pBuffer^,AvailableBytes);
if TotalBytes > AvailableBytes then
begin
ExtraBytes := TotalBytes - AvailableBytes;
GetMem(extBuffer, ExtraBytes);
extBuffer^ := Chr(0);
ExtraBytesRead := 0;
repeat
ActualBytesRead := Request.ReadClient(extBuffer^,ExtraBytes - ExtraBytesRead);
Strm.Write(extBuffer^,ActualBytesRead);
Inc(ExtraBytesRead, ActualBytesRead);
until (ExtraBytes - ExtraBytesRead )= 0;
end;
Response.Content := '<H3>文件上传成功。</H3>';
finally
Strm.Free;
end;
except
on E : Exception do
Response.Content := '<H3>出错!</H3><BR>' + E.Message;
end;
end;
解决方案 »
- CXGRID设置序号
- DELPHI 如何实现银行存折打印!!!!!!!!!!!
- 我通过socket控件客户端向服务器发送一字符串的时候提示"Socket Error # 10049,Cannot assign requested address"
- 谁有Indy Tcp Client控件与服务器相联的例子?比如说如何用这个控件读取一个网页?
- 近期热门:《致Borland的一封公开信》
- 如何测试BDE是否能够联得通?
- 急!急!急!程序自动建库问题?值得一看。
- 1、哪里可以注册域名和申请主页空间???请列举好点的公司 2、哪里有免费的个人主页空间???
- 暂别Delphi,用VC,心情不好不坏,散分!给前10人!~
- 刷新窗口用什么语句?
- 跪求:Delphi中有关于AdoDataSet的ConnectionString问题
- 怎么dbgrid运行时候不能用鼠标中键控制右边的导航条呢?
是BUFFER的问题,可我实在看不出来了:(,求助!!!!!
架设iis用TIdMultiPartFormDataStream+lyfupload.dll上传吧
ss='';
mpfs:=TIdMultiPartFormDataStream.create;
mpfs.AddFile('file1',getSystemDir+SaveToFile,ss);
showmessage(IdHTTP1.Post(SaveTo,mpfs));
另外注意你的iis的设置
你上网查查
http://www.playicq.com
这样的例子应该很多的
等待中。