procedure TDirectoryOperationProviderResolver.NewFileFromLocal;
const
cFileName = 'file:\%s';
var
I, lSize, lFixSize: Integer;
lDir, lFileName, lOSFileName: string;
lFileAttribute: TFileAttribute;
begin
if not OpenDialog.Execute then
Exit;
lFileAttribute := TFileAttribute.Create;
try
lDir := FileName;
lFixSize := TDocUtils.GetFixSize(lDir);
for I := 0 to OpenDialog.Files.Count - 1 do
begin
lOSFileName := OpenDialog.Files[I];
lSize := FileSys.FileSystem.FileGetSize(SysUtils.Format(cFileName, [lOSFileName]));
lFileName := FileSys.FileUtils.GetFileName(lOSFileName);
if (lFixSize <> 0) and (lSize > lFixSize) then
begin
JSDialogs.ShowMsg(SysUtils.Format('文件"%s"的大小(%s)超过上传大小(%s)的限制.',
[lFileName, TDocUtils.FileSizeToStr(lSize), TDocUtils.FileSizeToStr(lFixSize)]), '');
Continue;
end;
lFileName := TDocSystem.GetANewFileName(lDir,
FileSys.FileUtils.GetFileExt(lOSFileName), TDocUtils.DefaultFileExtName);
lFileAttribute.DisplayName := FileSys.FileUtils.GetFileName(lOSFileName);
lFileAttribute.ValuesAsString['OSFILENAME'] := lOSFileName;
lFileAttribute.ValuesAsString['DOCTYPE'] := TDocInfo.GetDocTypesByFileName(lFileName)[0];
TUnStructureDocUtils.NewFile(Context, lFileName, lFileAttribute);
end;
finally
lFileAttribute.Free;
end;
end;
知识中心也调用的是这个函数,上面的代码是调用过程,你研究一下和你写的那里不一样吧 |