T
tranke
Unregistered / Unconfirmed
GUEST, unregistred user!
小弟编写ASP上传组件,浏览了网上几篇有关方面的文章,发现左轻候大侠的文章写得最好,但是我也发现其里面那个保存函数FileSaveAs速度很慢,如果超过2MB以上的文件,需要等很久时间才能上传完毕,基本上都已经出现页面超时!
我改写了这个函数的文件流写入算法,发现速度还是提高不了多少,可能自己技术不到家吧!现在这里请教各位老大给予指点吧,谢谢了!我在线等待你们回复。。。
以下是FileSaveAs函数我自己改写写入文件流的代码,但是速度提高没有多少,请大家看看并给予指点吧:
procedure TUploadFile.FileSaveAs(FileName: OleVariant);
Const vCount = 1024;
var
fsout:TFileStream;
vBuff: Array of Byte;
vLength, vIndex, vEnd, vBuffCount: Integer;
begin
fsout := TFileStream.Create(Filename,fmcreate);
try
///vContentData := FFileData;
vLength := Length(FContentDataTemp);
repeat
if (vLength - fsout.Size) >= vCount then vBuffCount := vCount else vBuffCount := vLength - fsout.Size;
SetLength(vBuff, vBuffCount);
for vIndex := 1 to vBuffCount do
begin
vBuff[vIndex] := Byte(FContentDataTemp[vIndex])
end;
fsout.WriteBuffer(vBuff, vBuffCount);
Delete(FContentDataTemp, 1, vBuffCount);
until fsout.Size >= vLength;
///fsout.Write(Byte(FFileData[1]), Length(FFileData))
finally
fsout.Free;
end;
end;
其中 FContentDataTemp、vContentData 和 FFileData都是String类型变量,实际上是数组变量
我改写了这个函数的文件流写入算法,发现速度还是提高不了多少,可能自己技术不到家吧!现在这里请教各位老大给予指点吧,谢谢了!我在线等待你们回复。。。
以下是FileSaveAs函数我自己改写写入文件流的代码,但是速度提高没有多少,请大家看看并给予指点吧:
procedure TUploadFile.FileSaveAs(FileName: OleVariant);
Const vCount = 1024;
var
fsout:TFileStream;
vBuff: Array of Byte;
vLength, vIndex, vEnd, vBuffCount: Integer;
begin
fsout := TFileStream.Create(Filename,fmcreate);
try
///vContentData := FFileData;
vLength := Length(FContentDataTemp);
repeat
if (vLength - fsout.Size) >= vCount then vBuffCount := vCount else vBuffCount := vLength - fsout.Size;
SetLength(vBuff, vBuffCount);
for vIndex := 1 to vBuffCount do
begin
vBuff[vIndex] := Byte(FContentDataTemp[vIndex])
end;
fsout.WriteBuffer(vBuff, vBuffCount);
Delete(FContentDataTemp, 1, vBuffCount);
until fsout.Size >= vLength;
///fsout.Write(Byte(FFileData[1]), Length(FFileData))
finally
fsout.Free;
end;
end;
其中 FContentDataTemp、vContentData 和 FFileData都是String类型变量,实际上是数组变量