用 Python搭建一个微型的HTTP服务器用于传输 2024/11/9

使用内置的 http.server 模块,来搭建微型服务器。

快速启动服务器http.server --- HTTP 服务器Python 3.13.0 文档

声明:文章代码部分 由 ai 生成 

创建一个简单的文件共享服务器 进入 需要共享的目录 再打开cmd 输入以下代码

python -m http.server 8000

 打开服务器

设置主页 index.html

打开网页验证 

局域网的话这里要把英文改为 电脑ip地址 手机浏览器 才可以  访问!

关闭服务器只需要再当前cmd 界面Ctrl + C 按动即可关闭 

收到键盘中断,正在退出。 有可能失效,直接关闭当前cmd 窗口最直接!

查看所有端口占用情况:这里太多了不推荐用

在命令提示符窗口中,输入以下命令并按 Enter 键: netstat -ano

查找特定端口的占用情况:

假设你想查找端口 8080 的占用情况,可以输入以下命令:netstat -ano | findstr :8080

 

列出所有 Python 进程:

输入以下命令并按 Enter 键:tasklist | findstr python 


结束所有 Python 进程:

输入以下命令并按 Enter 键:taskkill /IM python.exe /F 


结束进程:PID 为 51276 的进程

输入以下命令并按 Enter 键:taskkill /PID 51276 /F


-m 选项用于将某个模块作为脚本运行。

具体来说,

-m 告诉 Python 解释器在标准库或第三方模块库中查找指定的模块,并执行该模块中的代码。


 为了简化操作我们写一个 简易脚本

  • 在编程语言中,REM常用于表示注释,特别是在BASIC语言中。

创建一个记事本 文件 填入以下代码

@echo off  
REM 关闭命令回显,使输出更干净 
python -m http.server 8000
REM 启动命令提示符 
start cmd 

 保存之后更改后缀名 为.bat

 双击执行 打开服务器!

 

 进阶功能,自定义文件上传处理,启动服务器并接受手机上传上来的文件!

这里直接放代码了,一共是三个文件

open.bat //快捷cmd

@echo off  
REM 关闭命令回显,使输出更干净 
python server.py
REM 启动命令提示符 
start cmd 

 server.py //主处理

import os 
from http.server import SimpleHTTPRequestHandler, HTTPServer 
import cgi # 自定义请求处理类
class MyRequestHandler(SimpleHTTPRequestHandler):# 处理GET请求def do_GET(self):if self.path == '/':# 响应200状态码self.send_response(200)# 设置响应头为text/htmlself.send_header('Content-type', 'text/html')self.end_headers()# 读取并发送upload.html文件内容with open('upload.html', 'rb') as file:self.wfile.write(file.read())else:# 调用父类方法处理其他路径的GET请求super().do_GET()# 处理POST请求def do_POST(self):if self.path == '/upload':# 解析表单数据form = cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD': 'POST','CONTENT_TYPE': self.headers['Content-Type']})if 'file' in form:file_item = form['file']if file_item.filename:# 构建文件保存路径file_path = os.path.join('uploads', file_item.filename)# 将上传的文件保存到指定路径with open(file_path, 'wb') as f:f.write(file_item.file.read())# 响应200状态码self.send_response(200)# 设置响应头为text/htmlself.send_header('Content-type', 'text/html')self.end_headers()# 发送上传成功的消息self.wfile.write('文件上传成功'.encode('utf-8'))else:# 如果没有选择文件,返回400错误self.send_error(400, '未选择文件')else:# 如果缺少文件字段,返回400错误self.send_error(400, '缺少文件字段')else:# 如果路径不存在,返回404错误self.send_error(404, '未找到')# 主程序入口
if __name__ == '__main__':# 检查并创建上传目录if not os.path.exists('uploads'):os.makedirs('uploads')# 定义服务器端口号PORT = 8000 # 创建HTTP服务器with HTTPServer(('', PORT), MyRequestHandler) as httpd:print(f'服务器运行在端口 {PORT}')# 启动服务器,持续监听请求httpd.serve_forever()

upload.html //网页

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文件上传</title>
</head>
<body><h1>上传文件</h1><form action="/upload" method="post" enctype="multipart/form-data"><label for="file">选择要上传的文件:</label><input type="file" id="file" name="file" required><br><br><button type="submit">上传</button></form>
</body>
</html>

 上传效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8942.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架 、 消息队列(RabbitMQ)、 数据库(MySql、MongoDB)

介绍 [CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案, 同样可以用来作为 EventBus 使用 github地址:https://github.com/dotnetcore/CAP官网地址: https://cap.dotnetcore.xyz/官网文档:https://cap.dotnetcore.xyz/userguide/zh/cap/id…

【Syncfusion系列】Diagram 杂谈第一篇

前言 我认为 Diagram 是 Syncfusion 中首屈一指的优秀控件&#xff01;最近在写一个工作流引擎&#xff0c;前端界面就用的是Diagram &#xff0c;接下来就来看一看。 Diagram的事件 查看 SfDiagram的属性&#xff0c;如果想实现什么事件&#xff0c;就看这些Command结尾的…

【服务器】使用命令行文本编辑器(如 vim、nano 或 vi)创建文件并编辑

【服务器】使用命令行文本编辑器&#xff08;如 vim、nano 或 vi&#xff09;创建文件并编辑 准备&#xff1a;连接至服务器&#xff08;如ssh&#xff09;创建 .ncl 文件方法 1: 使用 vim 创建 .ncl 文件方法 2: 使用 nano 创建 .ncl 文件确认文件已创建运行 .ncl 文件 总结参…

[DB] Project-1-MySQL

下载并安装了MySQL-8.0.40 root; 密码为6位 MySQL安装教程&#xff08;详细版&#xff09;_mysql安装教程8.0.36-CSDN博客 解决&#xff1a;管理员身份运行cmd出现mysql : 无法将“mysql”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;…

【JavaEE进阶】导读

本节⽬标 了解什么是JavaEE 在JavaEE中, 我们学习什么, 如何学, 难点是什么 一、Java EE 发展历程 Java EE(Java Platform Enterprise Edition), Java 平台企业版. 是JavaSE的扩展, ⽤于解决企业级的开发需求, 所以也可以称之为是⼀组⽤于企业开发的Java技术标准. 所以, 学习…

.NET 黑名单上传 突破WAF防护的SoapShell (免杀版)

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

多线程和线程同步复习

多线程和线程同步复习 进程线程区别创建线程线程退出线程回收全局写法传参写法 线程分离线程同步同步方式 互斥锁互斥锁进行线程同步 死锁读写锁api细说读写锁进行线程同步 条件变量生产者消费者案例问题解答加强版生产者消费者 总结信号量信号量实现生产者消费者同步-->一个…

MySQL_第13章_视图

1. 常见的数据库对象 2. 视图概述 2.1 为什么使用视图&#xff1f; 视图一方面可以使用表的一部分而不是所有的表&#xff0c;另一方面也可以针对不同的用户制定不同的查询视图。 2.2 视图的理解 视图是一种虚拟表&#xff0c;本身是不具有数据的&#xff0c;占用很少的内存…

Python数据分析-Netflix数据分析和可视化

一、研究背景 在当今时代&#xff0c;流媒体技术迅猛发展&#xff0c;如风暴般席卷全球娱乐产业&#xff0c;重塑了大众的娱乐消费模式。Netflix 在这一潮流中一马当先&#xff0c;成为全球首屈一指的在线流媒体平台。自 2007 年开启流媒体服务后&#xff0c;Netflix 就马不停…

数据集市是什么?有什么优势?

一、数据集市是什么&#xff1f; 1、数据集市的产生背景&#xff1a; 因为数据仓库的工作范围和成本比较巨大&#xff0c;技术部门必须对所有的以全企业的眼光对待任何一次决策分析&#xff0c;这样就变成了成本高、耗时高的大项目&#xff0c;而且这种集中式的数据处理方式往往…

Cross Modal Transformer: Towards Fast and Robust 3D Object Detection

代码地址 https://github.com/junjie18/CMT 1. 引言 在本文中&#xff0c;我们提出了Cross-Modal Transformer&#xff08;CMT&#xff09;&#xff0c;这是一种简单而有效的端到端管道&#xff0c;用于鲁棒的3D对象检测&#xff08;见图1&#xff08;c&#xff09;&#xf…

Oracle数据库 查看SQL执行计划的几种方法

前言 在日常的运维工作中&#xff0c;SQL优化是DBA的进阶技能&#xff0c;SQL优化的前提是要看SQL的执行计划是否正确&#xff0c;下面分享几种查看执行计划的方法&#xff0c;每一种方法都各有各的好处&#xff0c;可以根据特定场景选择某种方法。 一.使用AUTOTRACE查看执行…

简单介绍Nginx服务器的反向代理、负载均衡

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

域名+服务器+Nginx+宝塔使用SSL证书配置HTTPS

前言 在我的前面文章里&#xff0c;有写过一篇文章 linux服务器宝塔从头部署别人可访问的网站 在这篇文章&#xff0c;有教学怎么使用宝塔和买的服务器的公网IP&#xff0c;以及教怎么打包vue和springboot去部署不用域名的网站让别人访问 那么&#xff0c;这篇文章将在这个…

Chromium 中chrome.webRequest扩展接口定义c++

一、chrome.webRequest 注意 &#xff1a;从 Manifest V3 开始&#xff0c;"webRequestBlocking" 权限不再适用于大多数扩展程序。以 "declarativeNetRequest" 为例&#xff0c;它允许使用 declarativeNetRequest API。除了 "webRequestBlocking&quo…

.NET中通过C#实现Excel与DataTable的数据互转

在.NET框架中&#xff0c;使用C#进行Excel数据与DataTable之间的转换是数据分析、报表生成、数据迁移等操作中的常见需求。这一过程涉及到将Excel文件中的数据读取并加载至DataTable中&#xff0c;以便于利用.NET提供的丰富数据处理功能进行操作&#xff0c;同时也包括将DataTa…

多个NVR同时管理EasyNVR多品牌NVR管理工具/设备:IP常见问题解决方案

随着视频监控技术的不断发展&#xff0c;NVR&#xff08;网络视频录像机&#xff09;已经成为现代安防系统的重要组成部分。而为了更高效地管理多个品牌的NVR设备&#xff0c;EasyNVR这一多品牌NVR管理工具应运而生。然而&#xff0c;在实际使用过程中&#xff0c;尤其是在多个…

虚幻引擎 CEO 谈元宇宙:发展、策略与布局

在当今科技领域&#xff0c;元宇宙无疑是最热门的话题之一。Epic Games 首席执行官 Tim Sweeney 对元宇宙的未来发展充满信心&#xff0c;他认为开放元宇宙将融合娱乐、游戏和科技产业&#xff0c;带来一个光明的未来。本文将深入探讨采访中的关键内容&#xff0c;分析元宇宙的…

支付宝与华为终端联手,移动支付即将进入“碰时代”

大家好&#xff0c;我是小悟。 支付宝与华为终端强强联手&#xff0c;达成了战略合作&#xff01;这可不仅仅是个简单的合作哦&#xff0c;它预示着我们的移动支付方式即将迎来一场革命性的变革&#xff0c;正式进入“碰时代”&#xff01; 支付宝&#xff0c;作为全球领先的…

常用机器人算法原理介绍

一、引言 随着科技的不断发展&#xff0c;机器人技术在各个领域得到了广泛应用。机器人算法是机器人实现各种功能的核心&#xff0c;它决定了机器人的行为和性能。本文将介绍几种常用的机器人算法原理&#xff0c;包括路径规划算法、定位算法和运动控制算法。 二、路径规划算法…