天天看点

unigui上传图片并将文件名保存到Access数据库

 1、拖一个upload组件。

unigui上传图片并将文件名保存到Access数据库

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;