当前位置: 首页 > news >正文

http 文件下载和上传服务

文章目录

    • 文件传输需求
    • 下载
    • 上传

文件传输需求

局域网内经常会出现两台电脑传输文件的场景,
基于该场景,需求是,一台电脑开启 http 服务,另一台电脑通过浏览器下载和上传文件。

下载

下载很方便,一行命令就解决了

liyongjun@box:~/nvme/http$ sudo python3 -m http.server 80 --bind 192.168.37.83
Serving HTTP on 192.168.37.83 port 80 (http://192.168.37.83:80/) …
172.16.21.48 - - [10/Feb/2025 17:04:25] “GET / HTTP/1.1” 200 -
172.16.21.48 - - [10/Feb/2025 17:04:50] “GET /env.zip HTTP/1.1” 200 -
172.16.21.48 - - [10/Feb/2025 17:05:27] “GET /ghs.rar HTTP/1.1” 200 -

在这里插入图片描述

上传

upload.py

from http.server import HTTPServer, SimpleHTTPRequestHandler
import cgiclass HTTPRequestHandler(SimpleHTTPRequestHandler):def do_POST(self):# 解析表单数据form = cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD': 'POST','CONTENT_TYPE': self.headers['Content-Type'],})# 获取上传的文件file_item = form['file']if file_item.filename:# 设置文件保存路径file_path = './uploads/' + file_item.filenamewith open(file_path, 'wb') as file_out:file_out.write(file_item.file.read())self.send_response(200)self.end_headers()self.wfile.write(b"File uploaded successfully!")else:self.send_response(400)self.end_headers()self.wfile.write(b"No file received.")def do_GET(self):# 提供一个简单的HTML表单用于上传文件self.send_response(200)self.send_header('Content-type', 'text/html')self.end_headers()self.wfile.write(b"""<html><head><title>Upload File</title></head><body><h2>Upload File</h2><form method="POST" enctype="multipart/form-data"><input type="file" name="file" /><input type="submit" value="Upload" /></form></body></html>""")# 配置服务器
port = 8000
server_address = ('', port)
httpd = HTTPServer(server_address, HTTPRequestHandler)print(f"Starting httpd server on port {port}...")
httpd.serve_forever()

mkdir uploads
liyongjun@box:~/nvme/http$ python3 upload.py
Starting httpd server on port 8000…
172.16.21.48 - - [10/Feb/2025 19:02:40] “GET / HTTP/1.1” 200 -
172.16.21.48 - - [10/Feb/2025 19:03:02] “POST / HTTP/1.1” 200 -
172.16.21.48 - - [10/Feb/2025 20:05:40] “GET / HTTP/1.1” 200 -
172.16.21.48 - - [10/Feb/2025 20:05:44] “POST / HTTP/1.1” 200 -
172.16.21.48 - - [10/Feb/2025 20:14:57] “GET / HTTP/1.1” 200 -
172.16.21.48 - - [10/Feb/2025 20:22:50] “GET / HTTP/1.1” 200 -

在这里插入图片描述

相关文章:

  • 经典文献阅读之--SSR:(端到端的自动驾驶真的需要感知任务吗?)
  • ubuntu18.04启动不了修复
  • PythonWeb
  • 【AI论文】生成,但验证:通过回顾性重采样减少视觉语言模型中的幻觉
  • 数字ic后端设计从入门到精通2(含fusion compiler, tcl教学)
  • Origin绘图——双Y轴柱状图升级双向柱状图
  • 【C++游戏引擎开发】第18篇:视锥体裁剪与光源剔除
  • Java并发编程-线程池
  • numpy、pandas内存优化操作整理
  • 配置nginx服务,通过多ip区分多网站
  • 4399后端一面
  • 静态点亮数码管的某几段(STC89C52单片机)
  • SwiftUI 音频播放器:AVPlayer 在线播放 + 播放进度条 + 音量调节 + 后台播放
  • Python面向对象程序设计
  • FreeRTos学习记录--1.工程创建与源码概述
  • 深度学习预训练和微调
  • WWW2025 快手最新论文 T2Diff 解读:生成式扩散模型+混合注意力打造高效推荐
  • Synopsys:printvar命令和puts/echo命令的区别
  • Vue3---(9)组件间通信
  • 【基于WSAAsyncSelec模型的通信程序设计】
  • 湖南平江发生一起意外翻船事件,6人不幸溺亡
  • 文旅部:今年中国旅游日活动合作单位扩大至60多家
  • 第1现场|俄乌互指对方违反复活节临时停火提议
  • “雷公”起诉人贩子王浩文案将开庭:索赔6元,“讨个公道”
  • 特朗普亲自介入美日关税谈判:以势压人还是给对手“送助攻”
  • 一周人物| 萨韦利上海画展,陆永安“从董源到塞尚”