相关疑难解决方法(0)

上传多个文件 UploadFiles FastAPI

例子

这是我的代码:

from typing import  List
from fastapi import FastAPI, File, UploadFile
import asyncio
import concurrent.futures

app = FastAPI()
@app.post("/send_images")
async def update_item(
    files: List[UploadFile] = File(...),
):
    return {"res": len(files)}

Run Code Online (Sandbox Code Playgroud)

我向该服务器发送请求(这些特定网址仅作为示例):

import requests
import os 
import json
import numpy as np
import time
import io
import httpx
import asyncio
from datetime import datetime
import pandas as pd

from random import shuffle
import pandas as pd
import urllib
import io
from PIL import Image
from matplotlib import pyplot as plt …
Run Code Online (Sandbox Code Playgroud)

python python-asyncio fastapi httpx

5
推荐指数
1
解决办法
9631
查看次数

如何在 FastAPI 端点中将 File 对象传递给 HTTPX 请求

这个想法是从一个端点获取文件对象并将其发送到其他端点以使用它而不保存它。让我们看一下这个示例代码:

import httpx
from fastapi import Request, UploadFile, File


app = FastAPI()
client = httpx.AsyncClient()

@app.post("/endpoint/")
async def foo(request: Request, file: UploadFile = File(...))
    urls = ["/some/other/endpoint", "/another/endpoint/"]
    for url in urls:
        response = await client.post(url) # here I need to send the file to the other endpoint 
    return {"bar": "baz"}


@app.post("/some/other/endpoint/")
async def baz(request: Request, file: UploadFile = File(...)): # and here to use it
     # Do something with the file object
     return {"file": file.filename}


@app.post("/another/endpoint/")
async def baz(request: …
Run Code Online (Sandbox Code Playgroud)

python fastapi

4
推荐指数
1
解决办法
5289
查看次数

当我上传大文件时,fastapi 抛出 400 bad request

我在 VirtualBox 上配置并配置了一台具有 2048 MB RAM 的 Fedora 34 虚拟机,以便在localhost:7070. 完整的应用程序源代码和依赖代码以及说明位于此处。以下是我可以制作的最小的可重现示例。

main.py

import os, pathlib

import fastapi as fast
import aiofiles

        
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
RESULTS_DIR = pathlib.Path('/'.join((ROOT_DIR, 'results')))

    
app = fast.FastAPI()

    
@app.post('/api')
async def upload(
    request: fast.Request, 
    file: fast.UploadFile = fast.File(...),
    filedir: str = ''):
        
    dest = RESULTS_DIR.joinpath(filedir, file.filename)
    dest.parent.mkdir(parents=True, exist_ok=True)

    async with aiofiles.open(dest, 'wb') as buffer:
        await file.seek(0)
        contents = await file.read()
        await buffer.write(contents)

    return f'localhost:7070/{dest.parent.name}/{dest.name}'
Run Code Online (Sandbox Code Playgroud)

start.sh服务器应用程序

#! /bin/bash
uvicorn --host "0.0.0.0" --log-level debug …
Run Code Online (Sandbox Code Playgroud)

file-upload fastapi httpx

3
推荐指数
1
解决办法
7424
查看次数

如何在 FastAPI POST 请求中同时添加文件和 JSON 正文?

具体来说,我希望以下示例能够正常工作:

from typing import List
from pydantic import BaseModel
from fastapi import FastAPI, UploadFile, File


app = FastAPI()


class DataConfiguration(BaseModel):
    textColumnNames: List[str]
    idColumn: str


@app.post("/data")
async def data(dataConfiguration: DataConfiguration,
               csvFile: UploadFile = File(...)):
    pass
    # read requested id and text columns from csvFile
Run Code Online (Sandbox Code Playgroud)

如果这不是 POST 请求的正确方法,请告诉我如何从 FastAPI 中上传的 CSV 文件中选择所需的列。

python http http-post pydantic fastapi

2
推荐指数
3
解决办法
1659
查看次数

如何使外部 API 可以访问大文件?

我是 webdev 的新手,我有这样的用例:用户向 API 发送一个大文件(例如视频文件),然后该文件需要可供其他 API 访问(可能位于不同的服务器上) )进行进一步处理。

我使用 FastAPI 作为后端,定义一个类型为 的文件参数UploadFile来接收和存储文件。但是,让其他 API 可以访问此文件的最佳方法是什么?有没有办法可以URL从保存的文件中获取公开访问权限,其他 API 可以使用哪些文件来下载该文件?

python rest web-development-server fastapi

2
推荐指数
1
解决办法
1365
查看次数