百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

fastapi+vue3文件上传(vue formdata上传文件)

liuian 2025-04-06 18:08 73 浏览

最近构思实现了一个小demo网站,前端上传文件,后端分析文件,最后前端展示,整个过程还是蛮有意思的,刚刚开始学习网站开发,还有很多不会的地方,这里演示fastapi+vue3文件上传,上传的excel文件直接存入mongo中,读也是从mongo中读。

后台代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2024/1/19 09:20
# @Author  : ailx10
# @File    : main.py

# main.py
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import pandas as pd
from pymongo import MongoClient
import io
from fastapi import File, UploadFile
from fastapi.responses import JSONResponse

app = FastAPI()

# CORS 设置,允许所有来源访问,生产环境时应根据需要进行调整
origins = ["*"]
app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)


client = MongoClient("mongodb://admin:passwd@localhost:27017/")
db = client.alarm_analysis
collection = db.raw_sample


@app.get("/get_samples/{page}")
async def get_samples(page: int):
    skip = (page - 1) * 10
    samples = collection.find().skip(skip).limit(10)

    # 转换 ObjectId 为字符串
    samples = [{**sample, "_id": str(sample["_id"])} for sample in samples]

    total_samples = collection.count_documents({})  # 获取总样本数

    return JSONResponse(content={"data": samples, "total": total_samples})


@app.post("/upload_excel")
async def upload_excel(file: UploadFile = File(...)):
    contents = await file.read()
    df = pd.read_excel(io.BytesIO(contents))

    samples = df.to_dict(orient="records")
    result = collection.insert_many(samples)

    return {"inserted_ids": [str(id) for id in result.inserted_ids]}

前端代码:

// HelloWorld.vue



<script>
import axios from 'axios';

export default {
  data() {
    return {
      samples: [],
      page: 1,
      totalPage: 1,
    };
  },
  mounted() {
    this.loadSamples();
  },
  computed: {
    filteredKeys() {
      // 获取样本的键,排除 _id 和 sheet
      return Object.keys(this.samples[0] || {}).filter(key => key !== '_id' && key !== 'sheet');
    },
  },
  methods: {
    async uploadExcel(event) {
      const file = event.target.files[0];
      const formData = new FormData();
      formData.append('file', file);

      // 使用代理配置的URL
      await axios.post('/api/upload_excel', formData);

      // 重新加载样本数据
      this.page = 1;
      this.samples = [];
      this.loadSamples();
    },
    async loadSamples() {
      const response = await axios.get(`/api/get_samples/${this.page}`);
      this.samples = response.data.data;

      // 计算总页数,假设每页显示10行
      this.totalPage = Math.ceil(response.data.total / 10);
    },
    validatePage() {
      // 确保输入页码在有效范围内
      if (this.page < 1 this.page='1;' else if this.page> this.totalPage) {
        this.page = this.totalPage;
      }
    },
    prevPage() {
      if (this.page > 1) {
        this.page -= 1;
        this.loadSamples();
      }
    },
    nextPage() {
      if (this.page < this.totalPage) {
        this.page += 1;
        this.loadSamples();
      }
    },
  },
};
</script>

代理配置:

// vue.config.js

const { defineConfig } = require('@vue/cli-service')

module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    open:true,        
    host:'localhost',        
    port:8080,        
    https:false,       
    proxy: {
      '/api': {
        target: 'http://localhost:8000',
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/'
        }
      }
    }
  }
})

相关推荐

如何下载浏览器并安装(给我下载一个浏览器)

要在手机上下载电脑版浏览器的安装包,可以按照以下步骤操作:1.打开手机上的浏览器,进入浏览器的官方网站,例如GoogleChrome的官网https://www.google.com/chrome...

excel2007官方下载(excel2007官方下载免费版电脑版)
  • excel2007官方下载(excel2007官方下载免费版电脑版)
  • excel2007官方下载(excel2007官方下载免费版电脑版)
  • excel2007官方下载(excel2007官方下载免费版电脑版)
  • excel2007官方下载(excel2007官方下载免费版电脑版)
万能五笔拼音输入法下载(万能五笔输入法下载安装)
万能五笔拼音输入法下载(万能五笔输入法下载安装)

理论上是五笔打字最快,因为重码比较少,很多常用字一码、二码就可以打出来了!拼音是重码最多的输入法!拼音很多字打不出,因为你连那个字读什么都不知道,中国十三亿多人,能全懂中国汉字的没超过十个八个吧?五笔可以不用懂读音也可以打出五笔:速度快,...

2025-12-04 09:05 liuian

至强cpu为什么叫洋垃圾(至强处理器为什么卖那么便宜)

至强是英特尔的服务器CPU,通常大家是接触不到,也买不起的,非常贵。但是海外有很多数据中心在被淘汰之后,会有大量的至强处理器以洋垃圾的形式进口到国内销售。因为便宜、核心数量多,被一些不明就里的小白当成...

iphone序列号验机(iphone序列号验机入口)

1.首先打开设置,选择通用,点击关于本机,2.然后长按序列号,点击拷贝,返回桌面,3.打开safari,接着进入苹果官网,点击左上角的两道杠图标,4.点击技术支持,点击搜索支持框,点击快速链接的保修状...

免费pdf转换器软件(免费使用的pdf转换器)
免费pdf转换器软件(免费使用的pdf转换器)

1、金舟PDF转换器金舟PDF转换器是一款功能全面好用的pdf转换成Word转换器软件,界面简单,功能稳定,支持批量转换,操作起来非常方便,可以快速精确的将PDF转Word,Excel,PPT,JPG,文本,Txt,HTML。同时也可以将W...

2025-12-04 07:55 liuian

0000007b蓝屏bios设置(0000007b蓝屏什么模式都启动不了怎么办)
  • 0000007b蓝屏bios设置(0000007b蓝屏什么模式都启动不了怎么办)
  • 0000007b蓝屏bios设置(0000007b蓝屏什么模式都启动不了怎么办)
  • 0000007b蓝屏bios设置(0000007b蓝屏什么模式都启动不了怎么办)
  • 0000007b蓝屏bios设置(0000007b蓝屏什么模式都启动不了怎么办)
加锁的wifi获得密码(加密码的wifi怎么解开)
  • 加锁的wifi获得密码(加密码的wifi怎么解开)
  • 加锁的wifi获得密码(加密码的wifi怎么解开)
  • 加锁的wifi获得密码(加密码的wifi怎么解开)
  • 加锁的wifi获得密码(加密码的wifi怎么解开)
winrar安装包百度云(winrar电脑版安装包百度云)

具体如下:1、找到“winrar”压缩包,然后双击打开。?2、打开会发现这时候文件夹里面有两个文件,一个是安装程序,另外一个是key文件,两个都很重要,不要删除了。?3、打开安装程序进入安装的界面,这...

windows7纯净版哪里下载(windows7纯净版在哪下载)

要下载Windows7纯净版系统,你可以在官方微软网站上找到合法的下载链接。在搜索引擎中输入"Windows7纯净版下载",然后选择微软官方网站的链接。在官方网站上,你可以选择适合...

网页版qq浏览器(网页版QQ浏览器怎么看小说)

升级电脑上的Q浏览器的方法:使用电脑管家安装软件,打开管家后,在选项卡中选择升级软件,点击该软件行的安装按钮,管家会自动的从网络升级Q浏览器并安装。电脑下载浏览器步骤如下1.打开电脑浏览器,搜索想要下...

window7下载萤石云工作室打开失败

1、:先判断设备版本,该录像机接入萤石云平台是有版本要求的,要求升级到最新版本,符合要求的版本才能添加。2、:在显示器上右键选择“主菜单”--系统配置--网络配置--外网访问,在“启用萤石云”后面打上...

office2016永久激活教程(office2016激活180天如何永久)

方法一:1、下载Office2016之后,直接打开主界面,点击激活Office2016VL。2、等待一段时间之后,会提示Productactivationsuccessful,表示激活成功,...

手机桌面主题大全(手机桌面主题包)

华为手机有自己的主题桌面方法步骤  1.首先打开手机,我们在手机桌面上找到“主题”图标,点击该图标就可以进入到主题页面。2.进入到主题页面后,我们在页面右下角找到“我的”选项,点击该选项就能跳转到我的...

电脑无法启动自动修复(打开电脑启动修复无法自动修复)
  • 电脑无法启动自动修复(打开电脑启动修复无法自动修复)
  • 电脑无法启动自动修复(打开电脑启动修复无法自动修复)
  • 电脑无法启动自动修复(打开电脑启动修复无法自动修复)
  • 电脑无法启动自动修复(打开电脑启动修复无法自动修复)