fastapi写一个上传的接口

devtools/2024/9/22 17:20:55/

首先,确保您已经在 Python 环境中安装了 FastAPI。

安装环境:

pip install fastapi uvicorn

让我们创建一个图片上传的接口:

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse
import shutil
import osapp = FastAPI()# 存储上传图片的目录
UPLOAD_DIRECTORY = "uploads"# 如果目录不存在,则创建目录
os.makedirs(UPLOAD_DIRECTORY, exist_ok=True)@app.post("/upload/")
async def upload_image(file: UploadFile = File(...)):try:# 保存上传的文件with open(os.path.join(UPLOAD_DIRECTORY, file.filename), "wb") as buffer:shutil.copyfileobj(file.file, buffer)return JSONResponse(content={"message": "文件上传成功"}, status_code=200)except Exception as e:return JSONResponse(content={"message": f"发生错误: {str(e)}"}, status_code=500)
  • 我们从 FastAPI 中导入了必要的模块 (FastAPI, File, UploadFile),以及其他文件操作所需的模块 (JSONResponse, shutil, os)。
  • 创建了 FastAPI 的实例。
  • 定义了一个存储上传图片的目录 (UPLOAD_DIRECTORY)。确保这个目录在您的项目中存在。
  • 定义了一个 POST 请求的端点 /upload/,它接受一个 UploadFile 对象作为输入。
  • 在端点函数内部,我们将上传的文件保存到指定的上传目录中。

要运行这个 FastAPI 应用程序,将代码保存到一个文件中(例如 main.py),然后在终端中执行以下命令:

uvicorn main:app --reload

这条命令会启动 FastAPI 应用程序,而 --reload 标志则会在检测到代码更改时自动重新加载服务器。现在,您可以发送带有图片文件的 POST 请求到 http://localhost:8000/upload/,它会将图片保存在 uploads 目录中。


http://www.ppmy.cn/devtools/4116.html

相关文章

java的volatile

在Java中,线程之间对内存写入操作的可见性是一个重要的问题,因为每个线程都有自己的工作内存,并且线程之间共享主内存。当一个线程修改了共享变量的值,其他线程并不一定能立即看到这个修改,这就是所谓的可见性问题。 例…

汇编语言——将BX中的无符号数和有符号数以二进制、八进制、十六进制、十进制形式输出

文章目录 将BX中的无符号数以二进制形式输出将BX中的无符号数以八进制形式输出将BX中的无符号数以十六进制形式输出将BX中的无符号数以十进制形式输出将BX中的有符号数以十进制形式输出 将BX中的无符号数以二进制形式输出 利用移位指令会影响CF,默认dl30h(数字0)&a…

牛客周赛 Round 39(补题)

小红不想做完全背包 (hard) 题目描述 本题和easy版本的唯一区别是:ppp没有必须等于3的限制。 完全背包是一个经典问题,但小红完全不会完全背包,因此她不想做完全背包。 现在小红拿到了一个长的很像完全背包的题&…

Freertos学习第二天-Freertos基于ESP32-给任务传递单个参数

一共有两种方法 第一种: 在创建任务中可以传递参数,void *pt 传递了一个空指针 void Task1(void *pt) 可以运用这个空指针来设置引脚 byte * pbLED1PIN;pbLEDPIN &LED1_PIN;void * pvLED1PIN;pvLED1PIN (void *)pbLED1PIN; 以上代码意思是 byte * pbLE…

计算机网络——GBN协议实现

实验目的 编程模拟实现GBN可靠传输软件 实验内容 C 程序模拟实现Go-Back-N可靠数据传输,需要编写一个发送端程序和一个测试端程序来模拟传输过程 具体流程 1. 编写发送端程序,调用库实现socket连接,然后主要实现滑动窗口,接收…

神经网络压缩图像

简介 典型的压缩管道由四个组件组成: 编码:输入图像 x x x通过编码器函数 ε \varepsilon ε,将其转换为潜在表示 z z z。 量化:截断 z z z以丢弃一些不重要的信息 熵编码:使用某种形式的熵编码(例如&…

Tomcat下载配置地址

IntelliJ IDEA是一个强大的集成开发环境,能够大大简化Java应用程序的开发和部署过程。而Tomcat作为一个流行的Java Web服务器,其与IntelliJ IDEA的整合能够提供便捷的开发环境,让开发人员更专注于代码的创作与优化。 在配置IntelliJ IDEA以使…

docker最新版安装

docker安装 检查系统版本即卸载旧docker安装docker依赖工具及底层依赖、仓库源安装dockerdocker阿里云镜像资源站参考 检查系统版本即卸载旧docker # 查看操作系统的发行版号 uname -r# 查看系统版本 cat /etc/redhat-release# 卸载旧版本docker(如已安装过) yum remove docke…