刪除 API
本頁說明 DELETE /del/*path 如何把檔案或資料夾移入依日期分桶的回收桶,以及如何還原。
請求
# 刪除單一檔案
curl -X DELETE http://localhost:8080/del/blog/2025/ERftP1gTS7WCTeJ8_1744080848530.jpg
# 刪除整個資料夾
curl -X DELETE http://localhost:8080/del/blog/2025
*path 相對於 storage/image/upload/,可指向檔案或資料夾。
搬移規則
| 步驟 | 行為 |
|---|---|
| 1 | os.Stat 確認目標存在並判斷是否為資料夾 |
| 2 | 建立 storage/image/upload/.trash/YYYY-MM-DD/(伺服器本地日期) |
| 3 | 目的地為 .trash/YYYY-MM-DD/{檔名或資料夾名},只保留最後一段名稱,不保留原父路徑 |
| 4 | 同日已有同名項目時改名為 {名}_{毫秒時間戳}{副檔名} |
| 5 | os.Rename 搬移 |
回收桶位於 upload/ 底下,但以 . 開頭;Nginx 的 location ~ /\. 會拒絕任何含 /. 的路徑,因此無法經由 Nginx 讀取回收桶內的檔案。
回應
| 狀態碼 | 內容 | 情境 |
|---|---|---|
200 |
{"success":1,"message":"move path to: ..."} |
檔案已搬移 |
200 |
{"success":1,"message":"move folder to: ..."} |
資料夾已搬移 |
400 |
please assign a path first |
*path 為空 |
400 |
path not found: ... |
目標不存在 |
400 |
can not create folder: .../can not move file: ... |
建立回收桶或搬移失敗 |
408 |
timed out |
超過 30 秒 |
message 中的路徑為伺服器上的絕對路徑。
還原與快取
還原時把項目從 .trash/YYYY-MM-DD/ 移回 storage/image/upload/ 下的原位置即可。刪除不會清除轉檔快取,已產生的尺寸版本會繼續被回傳,見 快取分層。