From 6aa4f59b9ac0d90b998513fb8812124027ace344 Mon Sep 17 00:00:00 2001 From: Really Bad Apps Date: Tue, 2 Jan 2024 15:56:08 -0500 Subject: [PATCH] Update file.py Fixed local image uploading once again. --- imagekitio/file.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/imagekitio/file.py b/imagekitio/file.py index ad29a788..3c4e62ea 100644 --- a/imagekitio/file.py +++ b/imagekitio/file.py @@ -88,23 +88,35 @@ def upload( "file": file, "fileName": file_name, } + + if not options: options = dict() else: options = self.validate_upload(options.__dict__) if options is False: raise ValueError("Invalid upload options") - if isinstance(file,BufferedReader): - files.update({"file": (file_name,file,None)}) - elif isinstance(file, str) or isinstance(file, bytes): + + # Assuming file is a file path if it's a string + if isinstance(file, str): + file = open(file, 'rb') + files.update({"file": (file_name, file)}) + elif isinstance(file, BufferedReader): + files.update({"file": (file_name, file, None)}) + elif isinstance(file, bytes): files.update({"file": (None, file)}) + if "overwriteAiTags" in options: options["overwriteAITags"] = options["overwriteAiTags"] del options["overwriteAiTags"] + all_fields = {**files, **options} - multipart_data = MultipartEncoder( - fields=all_fields, boundary="--randomBoundary---------------------" - ) + multipart_data = MultipartEncoder(fields=all_fields) + + # Remember to close the file if you opened it + if isinstance(file, str): + file.close() + headers.update({"Content-Type": multipart_data.content_type}) resp = self.request.request( "Post", url=url, data=multipart_data.read(), headers=headers