加拿大机器人

pc28机器人 ,pc蛋蛋机器人,加拿大pc算账机器人

别再数据线了!用FastAPI 5分钟搭个局域网文件+剪贴板神器(一)

一、摆脱数据线:局域网工具的刚需场景

你是否有过这样的经历:手机里拍的高清照片想传到电脑,翻遍背包却找不到数据线;电脑上的文档要分享给同事的平板,只能先传到网盘再下载,耗时又耗流量;甚至想把手机剪贴板里的文字同步到电脑,却被各种跨设备同步软件的复杂设置劝退。

在局域网环境下,其实我们完全可以搭建一个轻量级的工具,实现文件快速传输和剪贴板共享,而FastAPI就是实现这个需求的绝佳选择。作为一款高性能的Python Web框架,FastAPI以简洁的语法、自动生成的交互文档和极快的运行速度著称,即使是编程新手,也能在短短5分钟内搭建起实用的局域网工具。

二、前期准备:3分钟搞定环境搭建

(一)安装必要库

首先确保你的电脑已经安装了Python环境,打开命令行终端,输入以下命令安装FastAPI和运行服务器所需的Uvicorn:

pip install fastapi uvicorn python-multipart

其中,python-multipart用于处理文件上传的表单数据,是实现文件传输功能的关键依赖。

(二)核心代码结构梳理

创建一个名为main.py的文件,这将是我们整个工具的核心。先导入需要的模块:

from fastapi import FastAPI, File, UploadFile, Form
from fastapi.responses import HTMLResponse, PlainTextResponse
from pydantic import BaseModel
import shutil
import os

  • FastAPI:用于创建Web应用实例

  • FileUploadFile:处理文件上传

  • Form:处理表单数据,用于剪贴板同步

  • HTMLResponse:返回网页界面

  • PlainTextResponse:返回纯文本格式的剪贴板内容

  • BaseModel:用于定义数据模型,规范请求和响应格式

三、功能实现:2分钟完成核心代码编写

(一)初始化应用与基础配置

app = FastAPI(title="局域网文件剪贴板工具", version="1.0")

# 创建文件保存目录
UPLOAD_DIR = "uploads"
if not os.path.exists(UPLOAD_DIR):
   os.makedirs(UPLOAD_DIR)

# 模拟剪贴板存储
clipboard_data = {"content": ""}

这里我们创建了一个FastAPI应用实例,设置了项目标题和版本,同时创建了用于保存上传文件的目录,并初始化了一个字典来模拟剪贴板存储。

(二)文件上传功能实现

@app.post("/upload-file/")
async def create_upload_file(file: UploadFile = File(...)):
   file_path = os.path.join(UPLOAD_DIR, file.filename)
   with open(file_path, "wb") as buffer:
       shutil.copyfileobj(file.file, buffer)
   return {"filename": file.filename, "message": "文件上传成功", "save_path": file_path}

这段代码定义了一个POST请求接口/upload-file/,当客户端上传文件时,FastAPI会自动解析文件内容,并将其保存到我们预先创建的uploads目录中,最后返回上传结果的相关信息。

(三)剪贴板同步功能实现

# 设置剪贴板内容
@app.post("/set-clipboard/")
async def set_clipboard(content: str = Form(...)):
   clipboard_data["content"] = content
   return {"message": "剪贴板内容已更新", "content": content}

# 获取剪贴板内容
@app.get("/get-clipboard/", response_class=PlainTextResponse)
async def get_clipboard():
   return clipboard_data["content"]

我们定义了两个接口:/set-clipboard/用于接收客户端发送的剪贴板内容并存储,/get-clipboard/用于返回当前存储的剪贴板内容,实现了跨设备的剪贴板同步。

(四)添加简易网页界面

@app.get("/", response_class=HTMLResponse)
async def main_page():
   return """
   <html>
       <body>
           <h1>局域网文件+剪贴板工具</h1>
           <h2>文件上传</h2>
           <form action="/upload-file/" enctype="multipart/form-data" method="post">
               <input name="file" type="file" multiple>
               <input type="submit" value="上传文件">
           </form>
           <h2>剪贴板同步</h2>
           <form action="/set-clipboard/" method="post">
               <textarea name="content" rows="4" cols="50" placeholder="输入剪贴板内容"></textarea>
               <br>
               <input type="submit" value="设置剪贴板">
           </form>
           <a href="/get-clipboard/">查看当前剪贴板内容</a>
       </body>
   </html>
   """

为了让工具更易用,我们添加了一个简单的网页界面,用户可以通过浏览器访问,直观地进行文件上传和剪贴板操作,无需使用复杂的API调试工具。

四、启动服务:1分钟完成测试

在命令行中输入以下命令启动服务:

uvicorn main:app --host 0.0.0.0 --port 8000

其中,--host 0.0.0.0表示允许局域网内的所有设备访问,--port 8000指定服务运行的端口。启动成功后,在同一局域网内的设备上,打开浏览器输入http://你的电脑IP地址:8000,就能看到我们搭建的工具界面了。

上传一个文件试试,你会发现文件瞬间就传到了电脑的uploads目录中;在剪贴板输入框中输入一段文字,点击“设置剪贴板”,然后在其他设备上访问http://你的电脑IP地址:8000/get-clipboard/,就能看到刚才输入的内容,跨设备剪贴板同步轻松实现。 


Powered By Z-BlogPHP 1.7.3

加拿大机器人,pc28机器人 ,pc蛋蛋机器人,加拿大pc算账机器人