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

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 -

在这里插入图片描述

http://www.xdnf.cn/news/839.html

相关文章:

  • Android RK356X TVSettings USB调试开关
  • LabVIEW数据采集与传感系统
  • 【项目管理】成本类计算 笔记
  • 离线安装rabbitmq全流程
  • postman乘法计算,变量赋值
  • EXCEL学习
  • JavaScript性能优化实战(1):性能优化基础与性能分析工具
  • 精益数据分析(11/126):辨别虚荣指标,挖掘数据真价值
  • NoSQL数据库
  • 泰迪智能科技大模型应用平台功能特色优势
  • KUKA机器人不同的安装方式的设置
  • leetcode0130. 被围绕的区域- medium
  • Electron Demo 的快速编译与启动
  • 【Django】设置让局域网内的人访问
  • Spring Batch
  • 重构便携钢琴专业边界丨特伦斯便携钢琴V30Pro定义新一代便携电钢琴
  • StarRocks:一款开源的高性能分析型数据仓库
  • 【PCB绘制】信号完整性准则
  • Linux——信号(2)信号保存与捕捉
  • 使用Matlab工具将RAW文件转化为TXT文件,用于FPGA仿真输入
  • 软件工程(1)
  • Spring MVC 核心注解与文件上传教程
  • 【AI News | 20250421】每日AI进展
  • Containerd与Docker的相爱相杀:容器运行时选型指南
  • 模拟散列表
  • VLA论文精读(十四)PointVLA: Injecting the 3D World into Vision-Language-Action Models
  • unity打包安卓时的签名文件jks转换keystore
  • PyCharm 在 Linux 上的完整安装与使用指南
  • XAML基本语法与例子
  • OpenCV 图形API(45)颜色空间转换-----将图像从 BGR 色彩空间转换为 YUV 色彩空间函数BGR2YUV()