跳轉到

使用說明

透過 SDK 文件中心功能可以管理有 授權 的文件庫內容,您可以對文件庫的資料夾進行新增、修改、刪除,也可以將文件上傳和刪除。

授權的文件庫

金鑰存取每個文件庫都需要被 授權 才能使用,因此使用前請先確定權限是否正確設定。

取得文件庫清單

在呼叫所有文件中心的功能前,都必須先知道文件庫的 代碼,代碼由文件庫管理員進行設定,您可以透過下列方法取得您有權限存取的文件庫清單,並查看其代碼...等資訊。

var rootList = await UofxService.DMS.GetRootFolder();
回傳的結果如下:
/// <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)是樹狀結構,一次只能取得一個文件庫的資料夾清單,透過下列方法取得:

var folderList = await UofxService.DMS.GetFolder("文件庫代碼");
回傳的型態為 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

新增資料夾

要在文件庫新增資料夾,須提供 新資料夾 的路徑,例如原本資料夾結構為:

📜 文件庫A
|  └─ 📂 資料夾A
|  └─ 📂 資料夾B
如果想要新增 資料夾D 使其變成如下結構:
📜 文件庫A
|  └─ 📂 資料夾A
|    └─ 📂 資料夾C
|       └─ 📂 資料夾D <== 想新增的資料夾
|  └─ 📂 資料夾B
此時只需設定 資料夾D 的路徑為 /資料夾A/資料夾C/資料夾D,系統即會自動補齊路徑中缺少的 資料夾C

var newFolderPath = "/資料夾A/資料夾C/資料夾D"; //新資料夾路徑
var folderList = await UofxService.DMS.AddFolder("文件庫代碼", newFolderPath);

刪除資料夾

要在文件庫刪除資料夾,須提供 預刪除資料夾 的路徑,例如我想刪除 資料夾D :

📜 文件庫A
|  └─ 📂 資料夾A
|    └─ 📂 資料夾C
|       └─ 📂 資料夾D <== 想刪除增的資料夾
|  └─ 📂 資料夾B

資料夾D 的路徑為 /資料夾A/資料夾C/資料夾D,程式撰寫如下:

var delFolderPath = "/資料夾A/資料夾C/資料夾D"; //刪除的資料夾路徑
var folderList = await UofxService.DMS.DeleteFolder("文件庫代碼", delFolderPath);

刪除後結構變成:

📜 文件庫A
|  └─ 📂 資料夾A
|    └─ 📂 資料夾C
|  └─ 📂 資料夾B

修改資料夾名稱

要修改資料夾名稱,須提供 資料夾 的路徑。例如我想將 資料夾C 更名為 資料夾C-1,其路徑為 /資料夾A/資料夾C:

📜 文件庫A
|  └─ 📂 資料夾A
|    └─ 📂 資料夾C
|  └─ 📂 資料夾B

var folderPath = "/資料夾A/資料夾C"; //資料夾路徑
var newName = "資料夾C-1";
var folderList = await UofxService.DMS.RenameFolder("文件庫代碼", folderPath, newName);
其正確執行結果將變成:

📜 文件庫A
|  └─ 📂 資料夾A
|    └─ 📂 資料夾C-1
|  └─ 📂 資料夾B

文件(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。

刪除文件

刪除文件需提供文件的路徑:

var filePath = "/資料夾A/資料夾C/sample1.pdf";
await UofxService.DMS.DeleteDoc("文件庫代碼", filePath);