1、拖一个upload组件。
2、执行execute函数。
unflpld_Up.Execute;
3、当上传完成事件触发。
procedure TUniFrmMainWin.unflpld_UpCompleted(Sender: TObject;
AStream: TFileStream);
var
DestName : string; //目标文件
DestFolder : string; //文件保存的路径
sResName : String; //真实保存在服务器上的文件名(ResName,不能有中文),
sTitleName : string; //仅用于在Grid中显示用的标签名TitleName(允许中文)
lJump : boolean; //存在则跳过
lResult : boolean;
sExt : string; //文件扩展名,文件类型
begin
//处理上传完成后的事件
//文件的扩展名
sExt := LowerCase(ExtractFileExt(unflpld_Up.FileName));
//文件名
sTitleName := ExtractFileName(unflpld_Up.FileName);
//文件保存的路径
DestFolder:=UniServerModule.FilesFolderPath + UniMainModule.UserName + '\';
//创建文件目录
CreateDir(DestFolder);
//将文件名另存为日期时间命名的文件。
sResName := FormatDateTime('yyyyMMddhhmmsszzz', now) + sExt;
DestName:=DestFolder + sResName;
//将文件保存到指定目录下
lResult := CopyFile(PChar(AStream.FileName), PChar(DestName), lJump);
if lResult then
begin
//文件保存成功,写入数据库
UniMainModule.adot_File.Active := False;
UniMainModule.adot_File.Active := True;
UniMainModule.adot_File.Append;
UniMainModule.adot_File.FieldByName('FTitleName').AsString := sTitleName;
UniMainModule.adot_File.FieldByName('FResName').AsString := sResName;
UniMainModule.adot_File.FieldByName('FSize').AsString := IntToStr(AStream.Size);
UniMainModule.adot_File.FieldByName('FDate').AsString := FormatDatetime('yyyy-MM-dd hh:mm:ss', now);;
UniMainModule.adot_File.FieldByName('FOwner').AsString := uniMainModule.UserName;
UniMainModule.adot_File.Post;
//刷新个人文件显示
adoq_UserFiles.Active := False;
adoq_UserFiles.Active := True;
end
else begin
MessageDlg('上传没有成功', mtError, [mbOK]);
end;
end;