Due to a python bug not all of the interfaces are compatible.
The fastapi.UploadFile type inherits from SpooledTemporaryFile a builtin
which does not specify the abstract for IOBase and does not support the
seekable method which is required for writing to the file sys. There is
some work to fix this:
https://bugs.python.org/issue26175
A fix for this has been merged in into the 3.11 rc so hopefully this will be
fixed soon:
python/cpython@78e70be
For now we reach in to the object to try and patch it ourselves.
This will not work for files larger than UploadFile._max_size as the
attributes change:
https://stackoverflow.com/a/47169185/5006710
We make sure that the object has a large enough size in
increase_max_file_size
When 3.11 rolls out (and we are able to use it) _fix_bad_spools and
increase_max_file_size can be deleted.
Due to a python bug not all of the interfaces are compatible.
The
fastapi.UploadFiletype inherits fromSpooledTemporaryFilea builtinwhich does not specify the abstract for
IOBaseand does not support theseekablemethod which is required for writing to the file sys. There issome work to fix this:
https://bugs.python.org/issue26175
A fix for this has been merged in into the 3.11 rc so hopefully this will be
fixed soon:
python/cpython@78e70be
For now we reach in to the object to try and patch it ourselves.
This will not work for files larger than
UploadFile._max_sizeas theattributes change:
https://stackoverflow.com/a/47169185/5006710
We make sure that the object has a large enough size in
increase_max_file_sizeWhen 3.11 rolls out (and we are able to use it)
_fix_bad_spoolsandincrease_max_file_sizecan be deleted.