@xesax

Почему перестал работать кусок кода на Линукс?

мой код хорошо работал в Windows, но после того, как я загрузил свое веб-приложение на сервер (linux ubuntu), при загрузке файлов в хранилище S3 перестал работать.

@upload_router.post('')
async def upload_file(
        request: Request, 
        file: Annotated[UploadFile, File()], 
    ):

    await s3_client.upload_file(file.file, f'{unique_filename}_{file.filename}')

Я получаю исключение:
raise HTTPClientError(error=e) botocore.exceptions.HTTPClientError: An HTTP Client raised an unhandled exception: Only io.IOBase, multidict and (name, file) pairs allowed, use .add_field() for passing more complex parameters, got <tempfile.SpooledTemporaryFile object at 0x7f951eab0a00>
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
grantur5707
@grantur5707
Full Stack Web Developer
Попробуйте явно читать содержимое файла перед отправкой в S3:

@upload_router.post('')
async def upload_file(
        request: Request, 
        file: Annotated[UploadFile, File()],
    ):
    file_content = await file.read()

    await s3_client.upload_fileobj(
        io.BytesIO(file_content),
        'bucket-name',
        f'{unique_filename}_{file.filename}' 
    )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы