Я пытаюсь написать API на python (Falcon), чтобы принять файл из параметра multipart-form и поместить его в хранилище объектов MINIO.Проблема в том, что я хочу отправить файл в Minio без сохранения его в любом временном месте.
У клиента Minio-python есть функция, с помощью которой мы можем отправить файл.
`put_object(bucket_name, object_name, data, length)`
, где data - данные файла, а length - общая длина объекта.Для более подробного объяснения: https://docs.min.io/docs/python-client-api-reference.html#put_object
Я столкнулся с проблемой накопления значений аргументов «data» и «length» в функции put_object.
Тип файла, принятый в классе API, - falcon_multipart.parser.Parser
, который нельзя отправить в Minio.
Я могу заставить его работать, если я записываю файл в любое временное местоположение и затем читаюего из нужного места и отправьте.
Может кто-нибудь помочь мне найти решение этой проблемы?
Я попытался прочитать данные файла из объекта Parser и попытался преобразовать файл в байты io.BytesIO
.Но это не сработало.
def on_post(self,req, resp):
file = req.get_param('file')
file_data = file.file.read()
file_data= io.BytesIO(file_data)
bucket_name = req.get_param('bucket_name')
self.upload_file_to_minio(bucket_name, file, file_data)
def upload_file_to_minio(self, bucket_name, file, file_data):
minioClient = Minio("localhost:9000", access_key='minio', secret_key='minio', secure=False)
try:
file_stat = sys.getsizeof(file_data)
#file_stat = file_data.getbuffer().nbytes
minioClient.put_object(bucket_name, "SampleFile" , file, file_stat)
except ResponseError as err:
print(err)
Traceback (most recent call last):
File "/home/user/.local/lib/python3.6/site-packages/minio/helpers.py", line 382, in is_non_empty_string
if not input_string.strip():
AttributeError: 'NoneType' object has no attribute 'strip'