基於 Python 內建 BaseHTTPServer 與 SimpleHTTPServer 擴充,實現一個支援多執行緒、檔案上傳下載、目錄瀏覽、斷點續傳的輕量級 HTTP 檔案共享伺服器。適用於區域網快速分享檔案、臨時測試環境等場景。
ThreadingMixIn 處理並發請求
# 進入欲共享的目錄
cd /path/to/share
# 指定埠號(預設 8080)
python SimpleHTTPServerWithUpload.py 1234
# 瀏覽器訪問
https://localhost:1234
class ThreadingServer(ThreadingMixIn, BaseHTTPServer.HTTPServer):
pass
class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
f = self.send_head()
if f:
self.copyfile(f, self.wfile)
f.close()
def do_POST(self):
r, info = self.deal_post_data()
# 回傳上傳結果頁面
...
def deal_post_data(self):
# 解析 multipart/form-data
# 處理檔名編碼(含中文檔名)
# 寫入檔案,支援重名自動重命名
...
def list_directory(self, path):
# 生成包含上傳表單、首頁按鈕的 HTML 列表
# 顯示檔案大小(人類可讀格式)、修改時間
# 目錄綠色、符號連結紫色標示
...
sizeof_fmt():位元組轉人類可讀格式(KB/MB/GB)modification_date():統一時間格式get_ip_address() / GetWanIp:跨平台 IP 取得

| 適用 | 不適用 |
|---|---|
| 區域網臨時檔案分享 | 生產環境高併發服務 |
| 開發測試模擬上傳介面 | 需認證授權的檔案系統 |
| 嵌入式裝置簡易 Web 介面 | 大檔案(>2GB)傳輸 |