Python HTTP 服务(推荐,支持大文件)

发布时间:2026/10/23 3:20:14
Python HTTP 服务(推荐,支持大文件) 跨服务器传文件一台起 HTTP 服务提供下载Server另一台作为客户端拉取Client。适用场景大文件传输Server 端被下载方# server_a.pyfrom fastapi import FastAPI, HTTPExceptionfrom fastapi.responses import FileResponseimport osapp FastAPI()# 文件存放目录可通过 docker -v 挂载或直接设为 /path/to/your/filesFILE_DIR /app/dataapp.get(/download/{filename})def download_file(filename: str):file_path os.path.join(FILE_DIR, filename)# 安全检查防止路径穿越攻击如 ../../etc/passwdif not os.path.abspath(file_path).startswith(os.path.abspath(FILE_DIR)):raise HTTPException(status_code400, detailInvalid filename)if not os.path.exists(file_path) or not os.path.isfile(file_path):raise HTTPException(status_code404, detailFile not found)return FileResponse(file_path, filenamefilename, media_typeapplication/octet-stream)if __name__ __main__:import uvicornuvicorn.run(app, host0.0.0.0, port7011)# 启动 Server需安装 fastapi, uvicornpython3 server_a.pyClient 端下载方# client_b.pyimport requestsimport os# 替换为 Server 的 IP 和端口SERVER_A_IP 132.0.0.1PORT 7011FILENAME 要下载的文件名url fhttp://{SERVER_A_IP}:{PORT}/download/{FILENAME}save_path f./{FILENAME}print(f开始从 {url} 下载文件...)try:with requests.get(url, streamTrue, timeout3600) as response:response.raise_for_status()total_size int(response.headers.get(content-length, 0))downloaded_size 0with open(save_path, wb) as f:for chunk in response.iter_content(chunk_size8192):if chunk:f.write(chunk)downloaded_size len(chunk)if total_size 0:percent (downloaded_size / total_size) * 100print(f\r下载进度: {percent:.2f}%, end)print(f\n下载完成文件已保存至: {os.path.abspath(save_path)})except requests.exceptions.RequestException as e:print(f下载失败: {e})# 启动 Client需安装 requestspython3 client_b.py注意事项Server 和 Client 之间网络需互通同一内网或公网可达用 Docker 跑 Server可通过-p 7011:7011将容器端口绑定到物理机端口外部可通过物理机IP:端口访问容器服务文件目录用-v挂载即可方案二scp简单快捷适合小文件双方必须都有 SSH 访问权限。# 从本地推送到远程scp /path/to/local/file userremote_ip:/path/to/remote/# 从远程拉取到本地scp userremote_ip:/path/to/remote/file /path/to/local/# 递归传输目录scp -r /path/to/local/dir userremote_ip:/path/to/remote/

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询