最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python搭建簡(jiǎn)易HTTP服務(wù)的兩種方案

 更新時(shí)間:2026年06月08日 08:33:03   作者:曾阿倫  
本描述介紹了兩種基于Python的輕量級(jí)HTTP服務(wù)方案,方案一通過(guò)一行命令啟動(dòng)極簡(jiǎn)文件下載服務(wù),適用于臨時(shí)文件共享;方案二則支持文件上傳下載、預(yù)覽功能,適合局域網(wǎng)內(nèi)文件傳輸需求,需要的朋友可以參考下

一、前言

日常開(kāi)發(fā)、本地文件共享、臨時(shí)傳輸場(chǎng)景中,我們需要快速搭建一個(gè)輕量HTTP服務(wù),無(wú)需部署Nginx、Tomcat等重型服務(wù)。Python 提供了零依賴、開(kāi)箱即用的HTTP服務(wù)能力,既可以使用內(nèi)置模塊快速啟動(dòng)靜態(tài)文件下載服務(wù),也可以自定義代碼實(shí)現(xiàn)瀏覽器可視化上傳、下載、預(yù)覽功能。

以下對(duì)比使用兩種搭建方案:

  • 方案一:一行命令啟動(dòng)靜態(tài)下載服務(wù)(極簡(jiǎn)、適合臨時(shí)文件共享)
  • 方案二:自定義Python服務(wù),支持瀏覽器上傳+下載+文件列表預(yù)覽(全能實(shí)用)

所有代碼基于Python3.x,無(wú)需安裝第三方庫(kù),原生內(nèi)置,跨Windows/Linux/Mac系統(tǒng)通用。

二、方案一:一行命令啟動(dòng)極簡(jiǎn)文件下載服務(wù)

2.1 功能說(shuō)明

使用Python內(nèi)置http.server模塊,快速將本地文件夾轉(zhuǎn)為Web目錄,瀏覽器可直接訪問(wèn)、預(yù)覽、下載目錄下所有文件,僅支持下載,不支持上傳,適合臨時(shí)文件共享。

2.2 啟動(dòng)命令

打開(kāi)終端,進(jìn)入需要共享的文件目錄,執(zhí)行對(duì)應(yīng)命令:

Python3 通用命令

# 默認(rèn)端口8000,監(jiān)聽(tīng)所有網(wǎng)卡
python -m http.server 8000
# 自定義端口(例如9000)
python -m http.server 9000

2.3 訪問(wèn)方式

  • 本地訪問(wèn):http://127.0.0.1:8000
  • 局域網(wǎng)訪問(wèn):http://本機(jī)IP:8000(手機(jī)/其他電腦可訪問(wèn))

2.4 優(yōu)缺點(diǎn)

? 優(yōu)點(diǎn):零配置、一秒啟動(dòng)、無(wú)依賴、跨平臺(tái)

? 缺點(diǎn):僅支持文件下載/預(yù)覽,不支持文件上傳,無(wú)權(quán)限控制,僅適合臨時(shí)使用

三、方案二:自定義HTTP服務(wù)

基于Python內(nèi)置http.server、cgi模塊二次封裝,實(shí)現(xiàn)完整功能:瀏覽器在線查看文件列表、點(diǎn)擊下載文件、選擇文件上傳保存到本地,無(wú)需任何第三方依賴。

3.1 服務(wù)代碼

新建文件 http_file_server.py,復(fù)制以下全部代碼:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Python 簡(jiǎn)易HTTP文件服務(wù)
功能:瀏覽器預(yù)覽文件列表、文件下載、文件上傳
無(wú)第三方依賴,Python3原生支持
"""
import os
import cgi
from http.server import BaseHTTPRequestHandler, HTTPServer

# 配置服務(wù)端口和文件存儲(chǔ)根目錄
SERVER_PORT = 8000
# 服務(wù)運(yùn)行目錄作為文件根目錄
ROOT_DIR = os.getcwd()


class FileServerHandler(BaseHTTPRequestHandler):
    # 忽略日志輸出,保持終端干凈
    def log_message(self, format, *args):
        return

    # 渲染HTML頁(yè)面模板
    def render_html(self, title, content):
        html = f"""
        <!DOCTYPE html>
        <html lang="zh-CN">
        <head>
            <meta charset="UTF-8">
            <title>{title}</title>
            <style>
                body {{font-family:微軟雅黑; margin:20px;}}
                .box {{border:1px solid #eee; padding:20px; border-radius:8px; margin-bottom:20px;}}
                a {{color:#0066cc; text-decoration:none;}}
                a:hover {{text-decoration:underline;}}
                .file-item {{line-height:2;}}
            </style>
        </head>
        <body>
            <h2>{title}</h2>
            {content}
        </body>
        </html>
        """
        self.send_response(200)
        self.send_header("Content-type", "text/html; charset=utf-8")
        self.end_headers()
        self.wfile.write(html.encode("utf-8"))

    # 展示文件列表 & 上傳表單頁(yè)面
    def do_GET(self):
        # 拼接頁(yè)面內(nèi)容
        upload_form = """
        <div class="box">
            <h3>文件上傳</h3>
            <form method="post" enctype="multipart/form-data">
                <input type="file" name="upload_file" />
                <button type="submit" style="padding:4px 12px; margin-left:10px;">上傳文件</button>
            </form>
        </div>
        """

        # 遍歷當(dāng)前目錄文件
        file_list = "<div class='box'><h3>文件列表(點(diǎn)擊下載)</h3>"
        for file in os.listdir(ROOT_DIR):
            # 忽略py源碼文件(可選,可刪除)
            if file.endswith(".py"):
                continue
            file_path = os.path.join(ROOT_DIR, file)
            file_list += f'<div class="file-item"><a href="{file}" rel="external nofollow"  target="_blank">{file}</a></div>'
        file_list += "</div>"

        # 渲染頁(yè)面
        self.render_html("Python文件上傳下載服務(wù)", upload_form + file_list)

    # 處理文件上傳請(qǐng)求
    def do_POST(self):
        try:
            # 解析上傳文件
            form = cgi.FieldStorage(
                fp=self.rfile,
                headers=self.headers,
                environ={"REQUEST_METHOD": "POST"}
            )
            # 獲取上傳文件對(duì)象
            upload_file = form["upload_file"]
            file_name = upload_file.filename

            # 空文件判斷
            if not file_name:
                self.render_html("上傳失敗", "<p>未選擇任何文件!</p><a href='/'>返回首頁(yè)</a>")
                return

            # 寫(xiě)入保存文件
            save_path = os.path.join(ROOT_DIR, file_name)
            with open(save_path, "wb") as f:
                f.write(upload_file.file.read())

            # 上傳成功頁(yè)面
            self.render_html("上傳成功", f"<p>文件【{file_name}】上傳成功!</p><a href='/'>返回首頁(yè)</a>")
        except Exception as e:
            self.render_html("上傳失敗", f"<p>上傳異常:{str(e)}</p><a href='/'>返回首頁(yè)</a>")


if __name__ == "__main__":
    server = HTTPServer(("0.0.0.0", SERVER_PORT), FileServerHandler)
    print(f"? 文件服務(wù)啟動(dòng)成功")
    print(f"?? 本地訪問(wèn):http://127.0.0.1:{SERVER_PORT}")
    print(f"?? 局域網(wǎng)訪問(wèn):http://本機(jī)IP:{SERVER_PORT}")
    print(f"?? 文件根目錄:{ROOT_DIR}")
    print("-" * 50)
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        server.server_close()
        print("? 服務(wù)已關(guān)閉")

3.2 啟動(dòng)服務(wù)

# 直接運(yùn)行腳本
python http_file_server.py

3.3 核心功能

  1. 文件預(yù)覽/下載:瀏覽器打開(kāi)頁(yè)面,自動(dòng)列出當(dāng)前目錄所有文件,點(diǎn)擊文件名直接下載
  2. 文件上傳:頁(yè)面選擇本地文件,點(diǎn)擊上傳,自動(dòng)保存到服務(wù)運(yùn)行目錄
  3. 跨設(shè)備訪問(wèn):支持局域網(wǎng)手機(jī)、其他電腦訪問(wèn)上傳下載文件
  4. 中文兼容:完美支持中文文件名、中文文件內(nèi)容

四、服務(wù)使用方法

4.1 本地訪問(wèn)

瀏覽器輸入:http://127.0.0.1:8000

4.2 局域網(wǎng)跨設(shè)備訪問(wèn)

  1. 查看本機(jī)電腦IP(Windows:ipconfig,Linux/Mac:ifconfig
  2. 同局域網(wǎng)設(shè)備(手機(jī)/其他電腦)訪問(wèn):http://電腦IP:8000
  3. 無(wú)需配置防火墻放行,默認(rèn)本地局域網(wǎng)可通

4.3 操作方式

  • 下載文件:頁(yè)面文件列表點(diǎn)擊對(duì)應(yīng)文件,瀏覽器自動(dòng)下載
  • 上傳文件:點(diǎn)擊選擇文件 → 選中本地文件 → 點(diǎn)擊上傳,自動(dòng)保存到服務(wù)目錄

五、常見(jiàn)問(wèn)題與注意事項(xiàng)

5.1 端口占用問(wèn)題

若8000端口被占用,修改代碼中 SERVER_PORT 為其他端口(如8080、9000)即可。

5.2 文件保存位置

所有上傳的文件會(huì)自動(dòng)保存到腳本運(yùn)行的目錄,可修改 ROOT_DIR 變量自定義存儲(chǔ)路徑。

5.3 安全說(shuō)明

該服務(wù)為臨時(shí)工具服務(wù),無(wú)賬號(hào)密碼、無(wú)權(quán)限校驗(yàn)、無(wú)加密傳輸,禁止部署在公網(wǎng),僅用于本地、局域網(wǎng)臨時(shí)文件傳輸。

5.4 兼容性

兼容所有Python3.x版本,支持Windows、Linux、Mac系統(tǒng),無(wú)需pip安裝任何依賴。

六、兩種方案對(duì)比

方案上傳功能下載功能部署難度適用場(chǎng)景
方案一不支持支持極低(1秒啟動(dòng))臨時(shí)文件下載、靜態(tài)資源共享
方案二支持支持低(直接運(yùn)行腳本)局域網(wǎng)雙向文件傳輸、臨時(shí)上傳下載工具

以上就是基于Python搭建簡(jiǎn)易HTTP服務(wù)的兩種方案的詳細(xì)內(nèi)容,更多關(guān)于Python搭建簡(jiǎn)易HTTP服務(wù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Ubuntu下使用python讀取doc和docx文檔的內(nèi)容方法

    Ubuntu下使用python讀取doc和docx文檔的內(nèi)容方法

    今天小編就為大家分享一篇Ubuntu下使用python讀取doc和docx文檔的內(nèi)容方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • python控制結(jié)構(gòu)的條件判斷與循環(huán)示例詳解

    python控制結(jié)構(gòu)的條件判斷與循環(huán)示例詳解

    這篇文章主要為大家介紹了python控制結(jié)構(gòu)的條件判斷與循環(huán)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 一篇文章搞懂python混亂的切換操作與優(yōu)雅的推導(dǎo)式

    一篇文章搞懂python混亂的切換操作與優(yōu)雅的推導(dǎo)式

    這篇文章主要給大家介紹了如何通過(guò)一篇文章搞懂python混亂的切換操作與優(yōu)雅的推導(dǎo)式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 詳解Python的hasattr() getattr() setattr() 函數(shù)使用方法

    詳解Python的hasattr() getattr() setattr() 函數(shù)使用方法

    這篇文章主要介紹了詳解Python的hasattr() getattr() setattr() 函數(shù)使用方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • Python基礎(chǔ)教程之if判斷,while循環(huán),循環(huán)嵌套

    Python基礎(chǔ)教程之if判斷,while循環(huán),循環(huán)嵌套

    這篇文章主要介紹了Python基礎(chǔ)教程之if判斷,while循環(huán),循環(huán)嵌套 的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Python3進(jìn)行表格數(shù)據(jù)處理的示例詳解

    Python3進(jìn)行表格數(shù)據(jù)處理的示例詳解

    數(shù)據(jù)處理是一個(gè)當(dāng)下非常熱門(mén)的研究方向,通過(guò)對(duì)于大型實(shí)際場(chǎng)景中的數(shù)據(jù)進(jìn)行建模,可以用于預(yù)測(cè)下一階段可能出現(xiàn)的情況。本文就來(lái)聊聊Python3進(jìn)行表格數(shù)據(jù)處理的相關(guān)操作,需要的可以參考一下
    2023-03-03
  • 一文淺析Python如何構(gòu)建優(yōu)雅的異常體系

    一文淺析Python如何構(gòu)建優(yōu)雅的異常體系

    這篇文章主要介紹了Python異常處理的核心原則與最佳實(shí)踐,文內(nèi)首先指出異常處理常被低估,通過(guò)真實(shí)案例展示了不當(dāng)處理帶來(lái)的隱患,隨后解析了Python異常機(jī)制的本質(zhì)是一種控制流信號(hào),并詳細(xì)介紹了異常層級(jí)結(jié)構(gòu),有需要的小伙伴可以了解下
    2026-03-03
  • Python 3.6.報(bào)錯(cuò) “module ‘enum‘ has no attribute ‘IntFlag‘”的真正原因與解決辦法

    Python 3.6.報(bào)錯(cuò) “module ‘enum‘ has no

    這篇文章主要為大家詳細(xì)介紹了Python 3.6.報(bào)錯(cuò) “module ‘enum‘ has no attribute ‘IntFlag‘”的真正原因與解決辦法,文中的示例代碼講解詳細(xì),有需要的可以了解下
    2025-11-11
  • pytorch 使用加載訓(xùn)練好的模型做inference

    pytorch 使用加載訓(xùn)練好的模型做inference

    今天小編就為大家分享一篇pytorch 使用加載訓(xùn)練好的模型做inference,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python中的默認(rèn)編碼使用

    python中的默認(rèn)編碼使用

    這篇文章主要介紹了python中的默認(rèn)編碼使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評(píng)論

三江| 雅安市| 剑河县| 梁山县| 花垣县| 滨州市| 新巴尔虎右旗| 双柏县| 麻城市| 舞阳县| 故城县| 尼玛县| 丰台区| 左权县| 拜城县| 株洲市| 普兰店市| 万州区| 赤水市| 三原县| 武山县| 深圳市| 浑源县| 罗江县| 南涧| 波密县| 衡水市| 和龙市| 巴南区| 克什克腾旗| 仁寿县| 河源市| 遵义市| 伊宁县| 卢龙县| 琼海市| 林甸县| 朝阳区| 获嘉县| 锦屏县| 天气|