使用說明
透過 SDK 文件中心功能可以管理有 授權 的文件庫內容,您可以對文件庫的資料夾進行新增、修改、刪除,也可以將文件上傳和刪除。
授權的文件庫
金鑰存取每個文件庫都需要被 授權 才能使用,因此使用前請先確定權限是否正確設定。
取得文件庫清單¶
在呼叫所有文件中心的功能前,都必須先知道文件庫的 代碼,代碼由文件庫管理員進行設定,您可以透過下列方法取得您有權限存取的文件庫清單,並查看其代碼...等資訊。
回傳的結果如下:/// <summary>
/// 文件庫
/// </summary>
public class RootFolderModel
{
/// <summary>
/// Folder Id
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 文件庫代碼
/// </summary>
public string Code { get; set; }
/// <summary>
/// Folder 名稱
/// </summary>
public string Name { get; set; }
/// <summary>
/// 來自AI知識庫
/// </summary>
public bool IsFromAI { get; set; }
}
為什麼我的回傳結果是空陣列
代表您的金鑰沒有被 授權 使用任一個文件庫。
為什麼我的文件庫代碼是空值
代表此文件庫尚未設定代碼,請聯絡管理員進行設定。
資料夾(folder)相關函式¶
取得資料夾清單¶
文件庫的資料夾(folder)是樹狀結構,一次只能取得一個文件庫的資料夾清單,透過下列方法取得:
回傳的型態為IEnumerable<FolderModel>
,是 FolderModel
類別的集合,FolderModel
內容如下:
/// <summary>
/// 文件夾
/// </summary>
public class FolderModel
{
/// <summary>
/// Folder Id
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 上一層Folder Id
/// </summary>
public Guid? ParentId { get; set; }
/// <summary>
/// Folder 名稱
/// </summary>
public string Name { get; set; }
/// <summary>
/// 資料夾路徑
/// </summary>
public string Path { get; set; }
}
ParentId
會是 null
。
新增資料夾¶
要在文件庫新增資料夾,須提供 新資料夾 的路徑,例如原本資料夾結構為:
如果想要新增 資料夾D 使其變成如下結構: 此時只需設定 資料夾D 的路徑為/資料夾A/資料夾C/資料夾D
,系統即會自動補齊路徑中缺少的 資料夾C
var newFolderPath = "/資料夾A/資料夾C/資料夾D"; //新資料夾路徑
var folderList = await UofxService.DMS.AddFolder("文件庫代碼", newFolderPath);
刪除資料夾¶
要在文件庫刪除資料夾,須提供 預刪除資料夾 的路徑,例如我想刪除 資料夾D :
資料夾D 的路徑為 /資料夾A/資料夾C/資料夾D
,程式撰寫如下:
var delFolderPath = "/資料夾A/資料夾C/資料夾D"; //刪除的資料夾路徑
var folderList = await UofxService.DMS.DeleteFolder("文件庫代碼", delFolderPath);
刪除後結構變成:
修改資料夾名稱¶
要修改資料夾名稱,須提供 資料夾 的路徑。例如我想將 資料夾C 更名為 資料夾C-1,其路徑為 /資料夾A/資料夾C
:
var folderPath = "/資料夾A/資料夾C"; //資料夾路徑
var newName = "資料夾C-1";
var folderList = await UofxService.DMS.RenameFolder("文件庫代碼", folderPath, newName);
文件(doc)相關函式¶
取得資料夾內文件清單¶
系統可以依照分頁設定取得資料夾內的文件清單,分頁設定的參數如下:
PageRequestModel
參數 | 型態 | 必填 | 預設值 | 說明 |
---|---|---|---|---|
Order | enum ListOrder |
V | ModifiedDate | 文件排序標準 |
By | enum OrderBy |
V | Descending | 排序方向 |
Page | int |
V | 1 | 第幾頁 |
Size | int |
V | 10 | 分頁一頁顯示幾筆 |
var folderPath = "/資料夾A/資料夾C"; //資料夾路徑
var pageSetting = new PageRequestModel() {
Order = ListOrder.ModifiedDate,
By = OrderBy.Descending,
Page = 1,
Size = 10
}
var content = await UofxService.DMS.GetFolderContent("文件庫代碼", folderPath, pageSetting);
回傳的結果同時包含 分頁資訊 和 分頁文件內容:
public class SearchByPage<FolderDetailResponseModel>
{
/// <summary>
/// 分頁資訊
/// </summary>
public PageInfoModel PageInfo { get; set; }
/// <summary>
/// 分頁內容
/// </summary>
public IEnumerable<FolderDetailResponseModel> Items { get; set; }
}
public class PageInfoModel
{
/// <summary>
/// 一頁顯示幾筆
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 總共幾筆
/// </summary>
public int ItemsCount { get; set; }
/// <summary>
/// 第幾頁
/// </summary>
public int PageNumber { get; set; }
/// <summary>
/// 總共幾頁
/// </summary>
public decimal PageCount { get; set; }
}
public class FolderDetailResponseModel
{
/// <summary>
/// 文件
/// </summary>
public DocDocumentResponseModel Document { get; set; }
/// <summary>
/// 最後修改者
/// </summary>
public EditorModel Editor { get; set; }
/// <summary>
/// 修改時間
/// </summary>
public DateTimeOffset ModifiedDate { get; set; }
/// <summary>
/// 是否可刪除
/// </summary>
public bool AllowDelete { get; set; }
}
public class DocDocumentResponseModel
{
/// <summary>
/// 文件 ID
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 檔案詳細內容
/// </summary>
public FileDetailViewModel File { get; set; }
}
public class FileDetailViewModel
{
/// <summary>
/// 檔案fileId
/// </summary>
public virtual Guid Id { get; set; }
/// <summary>
/// 檔案名稱
/// </summary>
public virtual string FileName { get; set; }
/// <summary>
/// 檔案大小
/// </summary>
public virtual long Length { get; set; }
/// <summary>
/// 原檔下載位址
/// </summary>
public virtual string Url { get; set; }
/// <summary>
/// 截圖位址
/// </summary>
public virtual string ScreenShotUrl { get; set; }
/// <summary>
/// 轉檔Pdf下載位址
/// </summary>
public virtual string PdfUrl { get; set; }
/// <summary>
/// 原始檔下載位址(選單上的下載原始檔)
/// </summary>
public virtual string RawUrl { get; set; }
/// <summary>
/// CAD檔案預覽的位址
/// </summary>
public virtual string CadUrl { get; set; }
/// <summary>
/// contenttype
/// </summary>
public virtual string ContentType { get; set; }
/// <summary>
/// 是否支援轉檔(改由viewstatus代替)
/// </summary>
public virtual bool? SupportConvert { get; set; }
/// <summary>
/// pdf檔案預覽狀態
/// </summary>
public virtual FileViewStatus? ViewStatus { get; set; }
/// <summary>
/// cad檔案預覽狀態
/// </summary>
public virtual CADViewStatus? CadViewStatus { get; set; }
/// <summary>
/// 是否從cad檔案上傳
/// </summary>
public virtual bool IsFromCad { get; set; }
}
檢查是否有同名的檔案¶
上傳文件前,可以先檢查是否有同名文件,好採取對應策略,透過以下方式可以檢查在資料夾中,是否有同名的檔案:
var folderPath = "/資料夾A/資料夾C"; //資料夾路徑
var duplication = await UofxService.DMS.CheckDocDuplication("文件庫代碼", folderPath, new List<string>() { "sample.pdf" });
if (duplication)
Console.WriteLine("檔名重複");
else
Console.WriteLine("檔名沒有重複");
您可以將同批要上傳的文件全部名稱一起檢查,只要有其中一個檔名已經存在,就會回傳 true
。
上傳文件¶
上傳文件需要先透過上傳涵式(UofxService.File.FileUpload
)將文件上傳,然後再搬移到資料夾中:
// 上傳檔案
var file1 = await UofxService.File.FileUpload(@"D:\sample\sample.pdf");
// 將檔案移動到資料夾
var folderPath = "/資料夾A/資料夾C"; //資料夾路徑
await UofxService.DMS.UploadDoc("文件庫代碼", folderPath, DocumentDuplicateAction.Replace, file1);
在這需指定檔名重複的處置方式 (DocumentDuplicateAction
),您可以選擇取代(Replace
)或重新命名(Rename
)。
如果您選擇重新命名,則遇到重複檔名時將會在檔名結尾自動加上 (1)
,例如 sample.pdf
會變成 sample(1).pdf
。
如果有多個檔案要同時上傳,可以如下作法:
// 上傳檔案
var file1 = await UofxService.File.FileUpload(@"D:\sample\sample1.pdf");
var file2 = await UofxService.File.FileUpload(@"D:\sample\sample2.pdf");
...
// 將檔案移動到資料夾
var folderPath = "/資料夾A/資料夾C"; //資料夾路徑
await UofxService.DMS.UploadDoc("文件庫代碼", folderPath, DocumentDuplicateAction.Replace, new List<FileViewModel>() {file1, file2, ...} );
上傳到根目錄
如果要上傳到根目錄(文件庫),則資料夾路徑設定為 /
即可。
檔案上傳限制
檔案上傳時會受限於系統管理員設定的 單一檔案大小限制,如果上傳的文件庫是 AI 文件庫,則檔案類型僅限制為 .pdf .pptx .docx .odt .odp。
刪除文件¶
刪除文件需提供文件的路徑: