python3简单的http.server互传文件的代码,可上传文件

import cgi
import http.server
import mimetypes
import os
import platform
import posixpath
import re
import shutil
import socket
import subprocess
import sys
import threading
import time
import urllib.error
import urllib.parse
import urllib.request
import uuid
from socketserver import ThreadingMixIn

try:
    import numpy as np
except:
    os.system('pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy ')
    import numpy as np

try:
    import qrcode
except:
    os.system('pip install -i https://pypi.tuna.tsinghua.edu.cn/simple qrcode ')
    import qrcode

try:
    import PIL
except:
    os.system('pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow ')

try:
    from io import StringIO
except ImportError:
    from io import StringIO


class GetWanIp:
    def getip(self):
        match_ip_dict = {
   }
        ipconfig_result_list = os.popen('ipconfig').readlines()
        for i in range(0, len(ipconfig_result_list)):
            if re.search(r'IPv4 地址', ipconfig_result_list[i]) != None:
                match_ip = re.search(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',
                                     ipconfig_result_list[i]).group(0)
                for j in range(3, 7):
                    if re.search(r"无线局域网适配器", ipconfig_result_list[i - j]) != None:
                        match_ip_dict[ipconfig_result_list[i - j]] = match_ip
        ip_dict = match_ip_dict
        for i in ip_dict:
            return ip_dict[i]

    def visit(self, url):
        opener = urllib.request.urlopen(url, None, 3)
        if url == opener.geturl():
            str = opener.read()
        return re.search(r'(\d+\.){3}\d+', str).group(0)


def showTips():
    print("")
    print('----------------------------------------------------------------------->> ')
    try:
        port = int(sys.argv[1])
    except Exception as e:
        print('-------->> 警告:端口未给出,将使用默认端口: 8080 ')
        print('-------->> 如需使用其他端口,请执行: ')
        print('-------->> python HTTPServerWithUpload.py port ')
        print("-------->> port是一个整数,它的范围是: 1024 < port < 65535 ")
        port = 8080

    if not 1024 < port < 65535:
        port = 8080
    print('-------->> 现在,在监听 ' + str(port) + ' 端口 ...')
    osType = platform.system()
    data = 'http://127.0.0.1:' + str(port)
    if osType == "Windows":
        print('-------->> 您可以访问地址URL:http://' +
              GetWanIp().getip() + ':' + str(port))
        data = 'http://'+GetWanIp().getip() + ':' + 
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
是的,Python 3支持通过HTTP协议进行文件的上传和下载操作。你可以使用内置的`http.server`模块来创建一个简单HTTP服务器,并通过浏览器或其他HTTP客户端来上传和下载文件。 下面是一个简单的示例代码,展示了如何使用Python 3创建一个HTTP服务器,支持文件的上传和下载: ```python from http.server import HTTPServer, SimpleHTTPRequestHandler # 定义请求处理类,继承自SimpleHTTPRequestHandler class MyRequestHandler(SimpleHTTPRequestHandler): # 重写do_POST方法,处理POST请求 def do_POST(self): content_length = int(self.headers['Content-Length']) file_data = self.rfile.read(content_length) # 保存上传的文件 with open('uploaded_file.txt', 'wb') as file: file.write(file_data) self.send_response(200) self.end_headers() self.wfile.write(b'File uploaded successfully!') # 创建HTTP服务器,监听本地的8888端口 server_address = ('', 8888) httpd = HTTPServer(server_address, MyRequestHandler) # 启动服务器 print('Server running on http://localhost:8888') httpd.serve_forever() ``` 运行上述代码后,你可以通过浏览器访问`http://localhost:8888`来访问服务器。点击页面上的上传按钮,选择一个文件进行上传,上传后会在服务器上保存名为`uploaded_file.txt`的文件。 如果你想下载服务器上的文件,可以直接在浏览器中访问`http://localhost:8888/uploaded_file.txt`,浏览器会开始下载该文件。 注意:这只是一个简单的示例,使用了Python 3的内置模块,适用于简单文件上传和下载需求。对于更复杂的需求,你可能需要使用第三方库或框架来处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值