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;