凌晨三點,第 14 次上傳失敗
一家工程顧問公司要把 2.3 GB 竣工圖說交給業主。Gmail 附件上限 25 MB、LINE 檔案 7 天過期,最後切成 9 個壓縮包丟免費空間——業主漏下載一段,整份作廢。他們統計全年花在重傳、找檔、對版本約 320 小時,人事成本逾 NT$25 萬,高於自建文件管理系統(DMS)的第一年總持有成本。
適用情境 × 不適用情境
| ✅ 適合自建 DMS | ❌ 不建議自建 |
|---|---|
| 單檔常超過 500 MB(圖說、影音) | 檔案都在 20 MB 內 |
| 要給外部廠商權限但不發帳號 | 十人以下、無外部分享 |
| 需稽核誰在何時下載哪版 | 無版本追溯需求 |
| 檔案要綁工單、合約、病歷 | 純檔案倉庫、不接系統 |
| 受個資或保存期限規範 | 無保存期限政策 |
最常誤判第四項:只想找地方放檔案,Dropbox Business 永遠划算;但要求檔案自動綁工單、簽收後鎖定,套裝工具就得靠膠水串接,成本反而失控。涉個資者另須符合《個人資料保護法》。
替代方案矩陣
| 方案 | 優勢 | 限制 | 年成本 |
|---|---|---|---|
| Google Workspace/Dropbox Business | 零開發、介面熟悉 | 無法綁流程、分享權限粒度粗 | NT$3,600–6,000/人 |
| SharePoint/OneDrive | 權限完整、整合 AD | 顧問費高、客製需 SPFx | 導入 NT$150,000–400,000 |
| 開源 Nextcloud/Paperless-ngx | 免授權費、外掛多 | 需 DevOps、升級易壞、中文 OCR 不穩 | NT$60,000–120,000 維運 |
| 客製 Laravel DMS | 嵌進既有系統、權限全自訂 | 投入高、需明確規格 | NT$180,000 起 |
完整流程拆解
| 階段 | 時間 | 交付物 | 工具 |
|---|---|---|---|
| 1 盤點與權限建模 | 5 天 | 檔案清單、權限矩陣、保存期限政策 | Notion、Miro |
| 2 儲存與上傳架構 | 3 天 | 儲存桶結構、分片策略、簽名 URL 流程 | S3 Multipart Upload、Cloudflare R2 |
| 3 介面設計 | 5 天 | 上傳/瀏覽/分享/稽核四畫面 | Figma |
| 4 上傳管線 | 10 天 | 分片、續傳、去重、進度回報 | tus、Uppy、Laravel Filesystem |
| 5 安全與治理 | 7 天 | 掃毒佇列、URL 有效期、下載稽核日誌 | ClamAV、Laravel Queue、Redis |
| 6 流程綁定 | 8 天 | 掛載工單合約、簽收鎖定、到期封存 | Laravel Scheduler |
| 7 壓測上線 | 5 天 | 5 GB 上傳報告、併發測試、維運手冊 | k6、UptimeRobot |
合計 43 天,約 9–10 週。第 4 階段最關鍵:切成 5–10 MB 分片逐塊上傳,任一塊失敗只重傳那塊,不會因最後 3% 斷線全部重來。
真實成本完整拆解
- ScriptWalker「文件管理系統(DMS)建置方案」:NT$180,000 起(上傳/權限/版本/稽核)
- 流程綁定模組+NT$60,000–120,000;中文 OCR 全文檢索+NT$80,000
隱藏費用(以 1 TB 估):
- 物件儲存:Cloudflare R2 約 US$0.015/GB/月(1 TB 約 NT$480/月),出口流量零費用
- 改用 AWS S3:儲存約 US$0.023/GB/月,下載另計 US$0.09/GB——高下載量專案多半敗在這項
- 掃毒主機:ClamAV 免授權費,仍需 1 vCPU/2 GB 容器約 NT$400/月
- 異地備份再加 40–60% 儲存費;稽核日誌留存 3 年約 NT$300/月
- 年度維護:開發費 15–20%,即 NT$27,000–36,000/年
第一年總持有成本約 NT$21–24 萬,與開頭浪費的 NT$25 萬打平。
實施真相 vs 客戶想像
| 客戶以為 | 實際發生 |
|---|---|
| 上傳不就是個按鈕 | 分片、續傳、去重、重試佔全案 35% 工時 |
| 掃毒加個套件就好 | 須非同步跑並先進待審,同步掃描會讓 500 MB 檔逾時 |
| 權限分主管和員工 | 盤點後平均 7–9 種角色,外部廠商還要切到專案層級 |
| 舊檔案匯進來很快 | 網路磁碟機滿是重複檔與亂碼檔名,清洗 2–3 週 |
| 到期自動刪掉就好 | 合約類不能真刪,須封存→通知→核准銷毀 |
常見陷阱 × 怎麼避開
- 檔案經 PHP 中轉:撐爆記憶體與 upload_max_filesize。→ 前端簽名 URL 直傳儲存桶,後端只收 metadata。
- 只驗副檔名:.php 改 .jpg 即繞過。→ 驗 MIME magic bytes、強制改名、儲存桶關執行權限。
- 分享連結永久有效:外流等同永久公開。→ 簽名 URL 預設 15 分鐘到期,敏感檔限下載次數。
- 沒有去重:同檔 12 人各傳一次,儲存費多 12 倍。→ 上傳前比對 SHA-256,重複檔只建關聯。
- 版本靠檔名:「最終版_真的最終_v3」是災難起點。→ 系統層做版本鏈,檔名由系統產生。
- 只記上傳不記下載:出事要查誰下載過。→ 核發簽名 URL 就落日誌,含帳號、IP、時間、版本。
成功指標 + 90 天路線圖
- 30 天|穩定度:上傳成功率 ≥ 99%?找檔時間從 8 分鐘降到 1 分鐘內?重點修弱網、行動裝置、超大單檔的失敗長尾。
- 60 天|採用率:部門週活躍 ≥ 70%?多少檔案還走 Email?未轉移部門多半卡在舊資料沒搬。
- 90 天|治理:看權限誤設數、逾期文件數、儲存成長曲線,啟用自動封存。多數專案此時發現冷資料佔 60%,轉低頻儲存再省 30–40%。
決策清單
- ☐ 最大單檔超過 500 MB?
- ☐ 每月找不到最新版幾次?
- ☐ 要開放給外部廠商嗎?
- ☐ 要追蹤誰下載哪個版本?
- ☐ 檔案要掛在工單或合約下?
- ☐ 有法定或契約保存期限?
- ☐ 到期封存還是真刪?誰核准?
- ☐ 舊檔案多少 TB、放在哪?
- ☐ 上線後誰管權限?
- ☐ 要全文檢索與 OCR 嗎?
- ☐ 年度儲存維運預算上限?
勾 7 項以上,客製 DMS 通常划算;3 項以內買 Dropbox Business 就好。
常見問題 FAQ
單檔最大能多大?
採分片直傳,上限由物件儲存決定:S3 相容的 multipart upload 單檔上限 5 TB、每片 5 MB–5 GB。我們標準壓測做到 5 GB 單檔。
病毒掃描會拖慢上傳嗎?
不會,掃描不在上傳流程裡。檔案傳完先標為掃描中,由 Laravel Queue 背景處理,通常 10–60 秒後轉可下載;完成前無法產生分享連結。
可以先做上傳,之後再補權限與稽核嗎?
不建議。權限模型決定資料表結構與儲存桶路徑,後補等於重構。合理分期是先完成上傳+權限+稽核核心,OCR 與簽核留第二期。
下一步
ScriptWalker 提供 30 分鐘免費檔案架構診斷:帶著現有存放方式與最大檔案大小,我們回一份「自建或買 SaaS」的判斷與預算。「文件管理系統(DMS)建置方案」NT$180,000 起,含需求訪談、權限建模、分片上傳管線與稽核日誌,9–10 週交付。
- Email:[email protected]
- 電話:0916-224-047
- LINE:@ufv9089p