使用Python快速搭建文件传输服务的方法

 更新时间:2023年07月11日 10:32:02   作者:小梁说代码  
这篇文章主要介绍了使用Python快速搭建一个文件传输服务,这样任何一个人都能打开浏览器把他电脑上的文件传给我了,本文给大家介绍的非常详细,需要的朋友可以参考下

当我的朋友需要把他电脑上面的文件从他的电脑传递到我电脑上的时候,我只需要启动服务

启动服务!

在这里插入图片描述

他打开web界面

就能把文件传递到我电脑上(还能够实时显示进度)

文件就已经在我电脑上的uploads文件夹里面了

项目结构如下

templates 存放前端html文件

​ updoad.html 上传文件的界面

uploads 存放用户上传的文件

​ 保研准备资料.zip 刚刚上传的文件

upload.py 后端服务文件

当你和朋友在同一个局域网内,当然可以直接根据主机的ip远程传输。当你们两个不在同一个网络内的时候,可以用frp内网穿透将一台主机的ip变成公网ip,也能实时进行传输了。

优点

  • 简单快速,不需要打开qq,微信等软件传输
  • 没有文件大小限制
  • 进度实时显示
  • 局域网也不需要联网,也非常快速,

后端服务搭建

用flask来搭建web服务

from flask import Flask, render_template, request, jsonify
import os
app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'  # 上传文件保存的目录
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def index():
    return render_template('upload.html')
@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    if file:
        filename = file.filename
        file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        file.save(file_path)
        return '文件上传成功!'
@app.route('/progress', methods=['POST'])
def progress():
    uploaded_bytes = request.form['uploadedBytes']
    total_bytes = request.form['totalBytes']
    progress = int(uploaded_bytes) / int(total_bytes) * 100
    return jsonify(progress=progress)
if __name__ == '__main__':
    app.run(debug=True)

只需要定义三个接口

  • / : 默认访问html页面,来供用户操作
  • /upload :上传文件的post接口
  • /progress : 实时显示进度的post接口

前台页面撰写

<!doctype html>
<html>
  <head>
    <title>文件上传</title>
    <script>
      function uploadFile() {
        var fileInput = document.getElementById('file');
        var file = fileInput.files[0];
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/upload');
        xhr.upload.onprogress = function(event) {
          if (event.lengthComputable) {
            var progress = Math.round((event.loaded / event.total) * 100);
            document.getElementById('progress').innerText = progress + '%';
          }
        };
        xhr.onload = function() {
          if (xhr.status === 200) {
            document.getElementById('progress').innerText = '上传完成';
          }
        };
        var formData = new FormData();
        formData.append('file', file);
        xhr.send(formData);
      }
      function updateProgress() {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/progress');
        xhr.onload = function() {
          if (xhr.status === 200) {
            var progress = JSON.parse(xhr.responseText).progress;
            document.getElementById('progress').innerText = progress + '%';
          }
        };
        xhr.send();
      }
      setInterval(updateProgress, 1000);  // 每秒更新一次进度
    </script>
  </head>
  <body>
    <h1>文件上传</h1>
    <input type="file" id="file">
    <button onclick="uploadFile()">上传</button>
    <div id="progress"></div>
  </body>
</html>

只需要执行两个函数就行

  • onload() : 文件上传函数,调用后台的 upload 上传文件接口
  • updateProgress() : 定时访问后台显示进度的 progress 接口,来获取文件上传的进度,进度计算后展示百分比给用户

这样任何一个人都能打开浏览器把他电脑上的文件传给我了。

到此这篇关于使用Python快速搭建一个文件传输服务的文章就介绍到这了,更多相关Python搭建文件传输服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现飞船大战

    python实现飞船大战

    这篇文章主要为大家详细介绍了python实现飞船大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • TensorFlow2基本操作之合并分割与统计

    TensorFlow2基本操作之合并分割与统计

    这篇文章主要介绍了TensorFlow2基本操作之合并分割与统计,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Python中操作PDF文件的常用方法

    Python中操作PDF文件的常用方法

    在 Python 中操作 PDF 文件的常用方法是使用专门的第三方库,这些库可以帮助你完成常见的操作,如读取 PDF 内容、提取文本、合并和拆分 PDF 文件、修改文件等,常用的库包括 PyPDF2、pdfminer、reportlab 等,下面是一些常见任务的示例,需要的朋友可以参考下
    2025-02-02
  • 基于Python实现虚假评论检测可视化系统

    基于Python实现虚假评论检测可视化系统

    这篇文章主要为大家详细介绍了如何基于Python实现一个简单的虚假评论检测可视化系统,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04
  • python创建属于自己的单词词库 便于背单词

    python创建属于自己的单词词库 便于背单词

    这篇文章主要为大家详细介绍了python创建属于自己的单词词库,便于背单词,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Pytorch对Himmelblau函数的优化详解

    Pytorch对Himmelblau函数的优化详解

    今天小编就为大家分享一篇Pytorch对Himmelblau函数的优化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • pygame实现俄罗斯方块游戏(AI篇2)

    pygame实现俄罗斯方块游戏(AI篇2)

    这篇文章主要为大家详细介绍了pygame实现俄罗斯方块游戏AI的第2篇,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Python高效地进行字符串操作的技巧分享

    Python高效地进行字符串操作的技巧分享

    Python 提供了强大的字符串操作功能,涵盖从基本的拼接、查找到正则表达式的复杂操作,掌握这些字符串处理技巧,不仅能提高代码效率,还能使开发过程更加顺畅,本文将介绍常见的字符串操作技巧以及如何在实际场景中高效应用它们,需要的朋友可以参考下
    2025-02-02
  • Python 深入理解yield

    Python 深入理解yield

    yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。
    2008-09-09
  • python破解WiFi教程代码,Python蹭网原理讲解

    python破解WiFi教程代码,Python蹭网原理讲解

    用Python生成一个简单的密码本,一般是有数字、字母和符号组成,这里用到的思路主要是穷举法。通过使用pywifi 模块,根据密码本暴力破解WiFi。本文只是从技术的角度来阐述学习Pywifi库!并不建议大家做任何破坏性的操作和任何不当的行为!
    2023-01-01

最新评论