• 【Python Fastapi】js上传文件,fastapi处理,js显示回传信息


    在这里插入图片描述

    python

    from fastapi import FastAPI, File, UploadFile, HTTPException
    from fastapi.staticfiles import StaticFiles
    from fastapi.responses import HTMLResponse
    from typing import List
    import requests
    
    app = FastAPI()
    
    # 配置静态文件目录
    app.mount("/static", StaticFiles(directory="static"), name="static")
    
    
    # HTML页面路由
    @app.get("/", response_class=HTMLResponse)
    async def get_upload_page():
        return """
        
        
        
            Image Upload
        
        
            

    Image Upload

    """
    # 文件上传端点 @app.post("/upload") async def file_(file: bytes = File(...)): # 如果要上传多个文件 files: List[bytes] = File(...) """使用File类 文件内容会以bytes的形式读入内存 适合于上传小文件""" return {"file_size": len(file)} # 返回文件大小 if __name__ == "__main__": import uvicorn uvicorn.run('main:app', host='0.0.0.0', port=8000, reload=True, workers=1)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    js

    document.addEventListener('DOMContentLoaded', () => {
      const form = document.querySelector('form');
      const fileInput = document.querySelector('input[type="file"]');
      const descriptions = document.getElementById('descriptions');
    
      form.addEventListener('submit', async (e) => {
        e.preventDefault();
    
        const formData = new FormData();
        formData.append('file', fileInput.files[0]);
    
        try {
          const response = await fetch('/upload', {
            method: 'POST',
            body: formData,
          });
    
          if (response.ok) {
            const data = await response.json();
            descriptions.innerHTML = `File size: ${data.file_size} bytes`;
          } else {
            descriptions.innerHTML = 'Upload failed';
          }
        } catch (error) {
          console.error('Error:', error);
          descriptions.innerHTML = 'An error occurred';
        }
      });
    });
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    结果网页:
    在这里插入图片描述

  • 相关阅读:
    5 分钟教你快速掌握 GitHub Actions 自动部署博客
    vue3 调度执行-控制执行次数
    vue2 - SuperMap3D加载基于Nginx服务生成的3DTileset模型切片服务地址
    【Android】编译系统之 make 和 Soong
    递归、搜索与回溯算法:综合练习
    Express
    WPF —— TextBlock、LineBreak RadioButton控件详解
    MCE 肿瘤代谢
    Jmeter 快速生成测试报告,学会领导主动给你加薪
    【C++】C++11 -- 新功能
  • 原文地址:https://blog.csdn.net/x1131230123/article/details/133179277