首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 實現支援上傳下載的簡易 HTTP 檔案伺服器

     編輯:更多程式設計知識

基於 Python 內建 BaseHTTPServer 與 SimpleHTTPServer 擴充,實現一個支援多執行緒、檔案上傳下載、目錄瀏覽、斷點續傳的輕量級 HTTP 檔案共享伺服器。適用於區域網快速分享檔案、臨時測試環境等場景。

核心功能

  • 檔案上傳/下載:支援 multipart/form-data 上傳,完整下載支援
  • 多執行緒並發:採用 ThreadingMixIn 處理並發請求
  • 目錄瀏覽與索引:自動生成 HTML 目錄列表,顯示檔案大小、修改時間、類型圖示
  • 斷點續傳支援:正確處理 Range 請求頭
  • 跨平台相容:Windows/Linux 雙平台測試通過
  • 外網 IP 自動偵測:整合多個 IP 查詢服務自動顯示存取網址

快速啟動


# 進入欲共享的目錄
cd /path/to/share

# 指定埠號(預設 8080)
python SimpleHTTPServerWithUpload.py 1234

# 瀏覽器訪問
https://localhost:1234

核心程式碼架構

多執行緒伺服器類別


class ThreadingServer(ThreadingMixIn, BaseHTTPServer.HTTPServer):
    pass

請求處理器:GET/HEAD/POST


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)傳輸
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved