源文件名称(含路径)
end;
2、返回文件大小
//返回文件大小(Bytes)
function TUploadFile.GetFileSize: OleVariant;
begin
result := FFileDataEnd - FFileDataStart + 1;
end;
(四)保存文件
在进行了(二)的操作之后,我们的上载组件可以根据ASP
程序的要求保存文件了。首先应该在
TLB设计窗口中声明如下两个方法SaveFileAs和SaveFile。
1、按指定文件名称保存文件
//按指定的文件名称保存文件,参数FileName为指定的文件名称,返回值True表示文件保存成功
function TUploadFile.SaveFileAs(FileName: OleVariant): OleVariant;
var
longIndex : LongInt;
AFile : file of byte;//以二进制的形式保存文件
byteData : Byte;
begin
result := true;
try
assign( AFile, FileName );
rewrite( AFile );
for longIndex := FFileDataStart to FFileDataEnd do
begin
byteData := Byte( FContentData[ longIndex ] );
Write( AFile, byteData );
end;
CloseFile( AFile );
except
result := false;
end;
end;
2、按缺省文件名称保存文件
//按缺省文件名称保存文件,将文件以同名文件保存在调用页面所在目录
function TUploadFile.SaveFile: OleVariant;
var
CurrentFilePath : string;
begin
//获取调用页面所在目录
CurrentFilePath := FScriptingContext.Request.ServerVariables[''PATH_TRANSLATED''];
CurrentFilePath := ExtractFilePath( CurrentFilePath );
//保存文件
result := SaveFileAs( CurrentFilePath + ExtractFileName( FFileName ));
end;
三、上载组件应用举例
在我们的例子中,DelphiUp.HTM是文件上载界面,DelphiUp.ASP用来执行文件上载操作。
DelphiUp.ASP的代码如下:
<!--DelphiUp.ASP:文件上载处理页面-->
<html><head><title>文件上载</title></head><body>
<% dim Upload, FileName
set Upload = Server.CreateObject("MyUpload.UploadFile")
FileName = Upload.GetFileName
Response.Write "<br>正在保存文件《"&FileName&"》"
if Upload.SaveFile then
Response.Write "<br>文件《"&FileName&"》上载成功。"
Response.Write "<br>文件大小为"&Upload.GetFileSize&"字节。"
else
Response.Write "<br>文件《"&FileName&"》上载失败。"
end if
set Upload=nothing %>
</body></html>
四、几点说明
1、由DELPHI自动生成的源代码编译的DLL文件大小有215K,可以在
ASPTypeLibrary_TLB.PAS的Interface段中将Uses中的单元除ActiveX外全部删除,在
MyUpload_TLB.PAS中删除Uses中所有单元,则生成的DLL文件大小可减少到61K。
2、以上方法同样适用于CGI
程序,不过要用TWebRequest对象。
以上
程序在PWIN98+Delphi3.0+PWS4.0下调试通过。