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

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

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

最近构思实现了一个小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': '/'
        }
      }
    }
  }
})

相关推荐

win10刻录光盘的方法和步骤(win10系统怎么刻录光盘)

1.打开Windows10中的“文件资源管理器”,找到要刻录的文件或文件夹。2.选中文件/文件夹,右键单击选中“发送到-->DVDRW驱动器”。3.确认要刻录的光盘的名称和格式(默...

惠普笔记本电脑官网驱动下载

HP惠普打印机驱动官网是存在的。因为HP惠普是一家著名的电脑及相关产品制造商,他们会提供各种驱动程序和软件以保证设备的兼容性和稳定性。HP惠普打印机驱动官网可以通过搜索引擎查找,也可以通过HP惠普的官...

2025win7专业版激活密钥(2020win7专业版永久激活码)

cad序列号和密钥是111-111111,可以通用的,但激活码则需要通过CAD2014注册机对申请号的换算才能得出结果,当然结果有很多,用户可以不断的Generate一个。cad序列号和密钥是111-...

window7下载itunes什么版本(window7怎么下载itunes)

出现此问题一般是因为itunes没有正确安装,可以参考如下解决方法:1.请查看本机电脑数位,计算机---右键---属性---看是32的还是64的;2.官网下载数位对应的iTunes;3...

u盘什么牌子的好(大容量的u盘什么牌子好)

十大耐用云U盘排行分别是:第一名闪迪第二名雷克沙第三名金士顿第四名三星第五名美商海盗船第六名东芝第七名惠普第八名威刚第九名台电第十名朗科。十大耐用云U盘排行分别是:第一名闪迪第二名雷克沙第三名金士顿第...

英文翻译器下载(英文翻译器软件下载)

APK(全称:Androidapplicationpackage,Android应用程序包)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android...

oppo主题包下载(oppoi主题下载)

opporeno5壁纸可以选择主题商店下载。1、打开手机设置,点击【个性化定制】,选择壁纸。2、可以选择本地相册、静态壁纸、动态壁纸、ART+,还可以选择主题商店。3、选择自己喜欢的壁纸,点击设置即...

老tplink路由器无线桥接设置图解
  • 老tplink路由器无线桥接设置图解
  • 老tplink路由器无线桥接设置图解
  • 老tplink路由器无线桥接设置图解
  • 老tplink路由器无线桥接设置图解
电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
  • 电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
  • 电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
  • 电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
  • 电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
硬盘开盘恢复数据(硬盘开盘恢复数据怎样收费)

  硬盘因为某些原因损坏,比如磁头损坏,用于驱动磁臂移动的电机烧毁等故障,可以通过打开硬盘盘体,更换相应的部件来维修的办法,以便进行数据恢复工作,这也就是一般所说的“开盘”。  开盘维修必须在无尘环境...

微软surface平板(微软surface平板电脑的降温散热是由风扇进行的吗)

可以。包括微软Surface平板电脑在内的一系列Windows平板,它们搭载的系统都是与电脑完全相同的Windows系统,其界面和操作方式都与电脑无异,并且全面支持电脑EXE应用程序,比如功能完整的O...

怎样恢复电脑删除的文件(怎样恢复电脑删除的文件记录)

文件误删了之后,先停止对电脑上其他文件的操作,然后判断该文件删除方式,如果是普通删除的文件可以打开回收站进行查看,之后进行还原的操作,如果是永久删除的文件,那可以借助到专业的数据恢复软件来进行恢复操作...

win7纯净原版(win7旗舰纯净原版)

windows7ghost纯净版特色:1、专业为电脑制作,定制版系统使笔记本电脑运行更加可靠。2、安装盘经过多名电脑安装人员测试,稳定性和兼容性非常好。3、通过多台不同硬件型号的计算机测试,没有蓝屏,...

电脑摄像头驱动器怎么安装(电脑摄像头的驱动程序)

摄像头驱动的安装方法:首先,先取出摄像头,然后将USB端口插入电脑的端口中。当然,如果是需要长时间使用,建议将其插入后面板上。其次,初次使用摄像头时,系统可能会搜索驱动程序进行安装。那些免驱动的都可以...

win10虚拟机装win7(win10虚拟机怎么装win7)

WIN7系统下是可以安装Win10虚拟机,用户可以按照以下方法安装:1、网上搜索下载安装360软件管家;2、在搜索栏里输入VM,然后在VMwareWorkstation旁点下载,系统会自动安装;3、安...