跳到內容
Syno Package Land
語言: 繁體中文

把檔案放在共用資料夾

套件可以把檔案放在 DSM 共用資料夾,而不是私有的資料資料夾。你在 dsm-package.yaml 宣告這個資料夾。安裝精靈會請管理員選一個既有的共用資料夾(select),或幫你建立一個(create)。之後你的 App 從安裝程式寫入的檔案讀取資料夾名稱。

建立帶有共用資料夾的專案,或把區塊加進既有的 dsm-package.yaml:

Terminal window
synopkgland init -t native-go --shared-folder select my-app
選項意義
--shared-folder select|create模式。
--shared-folder-name <name>要建立的共用資料夾。僅用於 create。
--shared-folder-key <key>你的 App 使用的鍵。預設為 shared。
--shared-folder-permission ro|rw套件帳號取得的權限。預設為 rw。

在 dsm-package.yaml 中的相同宣告:

install:
sharedFolder:
# select 或 create
mode: select
# 你的 App 用來讀取資料夾的名稱
key: media
# ro 或 rw:套件帳號需要的權限
permission: rw
# 僅 create:要建立的共用資料夾
# name: my-app-data
欄位規則
modeselect 或 create
key^[a-z][a-z0-9_]{0,31}$。不可以 pkgwizard_、synopkg 或 change_ 開頭。
permissionro 或 rw
namecreate 必填,select 不允許。^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$。homes、users、volume1、usbshare1 這類 DSM 系統名稱會被拒絕。

install 只接受 sharedFolder。一個套件只宣告一個共用資料夾。

模式安裝精靈升級精靈
select一個步驟,列出 NAS 上的共用資料夾,並附上權限說明。除非管理員勾選變更核取方塊,否則沿用目前的資料夾。
create說明套件會建立名為 name 的資料夾,並給套件帳號該權限。如果資料夾已存在,就保留它,只設定套件帳號的權限。相同的說明。

使用 select 時,DSM 不會讓套件帳號存取在精靈中選的資料夾。安裝後,管理員要開啟控制台 > 共用資料夾,編輯該資料夾,在「權限」>「系統內部使用者」中給套件帳號 ro 或 rw。套件帳號的名稱與套件名稱相同。在那之前,你的 App 會回報該資料夾不可讀取。

使用 create 時,解除安裝套件絕不會刪除共用資料夾或其中的檔案。

安裝程式會在 App 的資料資料夾寫入 config.json。它儲存的是資料夾名稱,不是路徑:

{"schema":1,"shared_folders":{"media":"my-share"}}

Go 模板每次都會重新解析儲存空間路徑,因此資料夾搬到另一個儲存空間後仍能運作。用 Config.SharedFolders() 讀取,或用 app.ReadSharedFolders 與 app.ResolveSharedFolder。每個資料夾會回報 key、name、path、exists、readable 與 writable。權限檢查會遵循 DSM ACL。模板也會把同一份清單以 shared_folders 放進 app.status 的回應。如果 config.json 損毀,app.status 會回報 shared_folders_error。

app.status 預設只有管理員可用。若要讓所有已登入的使用者都能用,請在 backend/internal/api/permissions.json 設定 "app.status": "authenticated"。

限制值
每個套件的宣告數1
鍵1 到 32 個字元
建立的資料夾名稱1 到 32 個字元
init --shared-folder僅限 native-go 模板
套件帳號的權限ro 或 rw
症狀或錯誤碼原因解法
STANDALONE_SHARED_FOLDER_INVALID某個欄位違反上表的規則。修正 install.sharedFolder。
INIT_SHARED_FOLDER_INVALIDinit --shared-folder 的值無效,或模板不是 native-go。修正選項,並使用 -t native-go。
readable 或 writable 為 false套件帳號對選定的資料夾沒有存取權。在控制台 > 共用資料夾,給套件帳號 ro 或 rw。
exists 為 false,且錯誤為 shared folder not found on any volume沒有任何儲存空間有該名稱的資料夾。確認該資料夾仍然存在。
錯誤說名稱對應到多個儲存空間兩個儲存空間各有一個同名資料夾。重新命名其中一個資料夾。

所有錯誤碼請見錯誤碼。