Code: Select all
@router.post("/{connector_id}/upload")
@router.post("/{connector_id}/upload/{upload_id}")
async def upload(
tenant_id: str,
connector_id: str,
files: list[UploadFile],
upload_id: str | None = None,
controller: ConnectorController = Depends(get_controller),
) -> dict:
...
Der sendende Microservice erstellt den Endpunkt wie folgt:
Code: Select all
async def upload_file(
self,
files: list[UploadFile],
) -> str:
url = [...]
form_data = ["files",(file.filename, file.file, file.content_type) for file in files]
try:
response = await self._client.post(url=url, files=form_data)
except ConnectError as e:
[...]
Code: Select all
form_data = [("files",(f.filename, f.file, "application/vnd.apache.parquet")) for f in files]wobei _client ein httpx.AsyncClient ist und Dateien wie folgt erstellt werden:
Code: Select all
parquet_buffer = io.BytesIO()
df.to_parquet(parquet_buffer, index=False) #Pandas dataframe
parquet_buffer.seek(0)
upload_file = UploadFile(
filename=file.name,
file=parquet_buffer,
size=parquet_buffer.getbuffer().nbytes,
)
upload_files.append(upload_file)
Code: Select all
b'{"detail":[{"loc":["body","files"],"msg":"field required","type":"value_error.missing"}]}'
Mobile version