快速利用python搭建http服务,传输文件

本文介绍了一种通过命令行快速分享本地文件夹的方法。首先打开CMD,进入目标文件夹,然后使用python内置模块启动简易HTTP服务器,默认端口为8000。如果提示找不到SimpleHTTPServer模块,请尝试使用http.server模块。

打开cmd

进入你要分享的文件夹
输入
python -m SimpleHTTPServer 8000

如果提示 No module named SimpleHTTPServer

试一试 python.exe -m http.server

### 创建简单 HTTP 文件服务器 为了满足文件上传和下载的需求,可以采用 Python 的内置库 `http.server` 或者更高级别的框架 Flask 来构建服务。 #### 方法一:基于 `http.server` 对于快速搭建支持文件操作的服务端应用而言,Python 自带的 `http.server` 模块提供了一个简易的方式。然而,默认情况下它并不直接支持文件上传功能。可以通过扩展该模块来增加此特性: ```python import os from http import server import socketserver PORT = 8000 class CustomHTTPRequestHandler(server.SimpleHTTPRequestHandler): def do_POST(self): """Handle POST requests to upload files.""" length = int(self.headers['Content-Length']) post_data = self.rfile.read(length) with open(os.path.join('.', 'uploads', os.path.basename(self.path)), 'wb') as f: f.write(post_data) self.send_response(201, "Created") self.end_headers() if __name__ == "__main__": Handler = CustomHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print(f"Serving at port {PORT}") try: httpd.serve_forever() except KeyboardInterrupt: pass finally: httpd.server_close() ``` 这段代码定义了一个自定义请求处理器类 `CustomHTTPRequestHandler` 继承自 `SimpleHTTPRequestHandler` 并重写了 `do_POST()` 方法以便处理来自客户端提交的数据流并保存至本地磁盘[^1]。 #### 方法二:利用 Flask 实现更加灵活的应用程序结构 如果希望获得更大的灵活性以及更好的可维护性和安全性,则推荐使用 Web 应用开发框架如Flask: ```python from flask import Flask, request, send_from_directory import os app = Flask(__name__) UPLOAD_FOLDER = './uploads' os.makedirs(UPLOAD_FOLDER, exist_ok=True) @app.route('/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: return 'No file part', 400 file = request.files['file'] filename = secure_filename(file.filename) filepath = os.path.join(app.config['UPLOAD_PATH'], filename) file.save(filepath) return f'{filename} has been uploaded.', 201 @app.route('/download/<path:filename>', methods=['GET']) def download_file(filename): return send_from_directory(directory=UPLOAD_FOLDER, path=filename, as_attachment=True) if __name__ == '__main__': app.run(debug=True, host='0.0.0.0') ``` 这里展示了如何配置路由规则分别对应不同的HTTP方法(GET/POST),并通过调用相应函数完成实际业务逻辑——即接收上传文件或将指定路径下已存在的资源发送给访问者[^3]。 以上两种方式都可以有效地建立起能够执行基本文件管理任务的小型Web应用程序;具体选择取决于项目复杂度和个人偏好等因素考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值