Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upload image as bytes. #778

Open
andriangashper opened this issue Mar 3, 2023 · 0 comments
Open

Upload image as bytes. #778

andriangashper opened this issue Mar 3, 2023 · 0 comments
Assignees

Comments

@andriangashper
Copy link

Summary

Hi. I am trying to upload a image to google drive that is in bytes format. However, I get the following error:


UnicodeDecodeError Traceback (most recent call last)
g:\My Drive\xFiles\Work\ReMedia\KID\MIO52\Python\workspace.ipynb Cell 19 in <cell line: 6>()
3 credentials = Credentials.from_authorized_user_info(info={"client_id": GOOGLE_CLIENT_ID, "client_secret": GOOGLE_CLIENT_SECRET, "refresh_token": GOOGLE_REFRESH_TOKEN})
4 service = googleapiclient.discovery.build('drive', 'v3', credentials=credentials)
----> 6 media = MediaFileUpload(screenshot,mimetype='image/png',)
7 file_metadata = {'name': f'{adid}.png', 'parents': [drive_folder_id]}
10 try:

File c:\Users\andri\Pythonenvs\googleapi\lib\site-packages\googleapiclient_helpers.py:131, in positional..positional_decorator..positional_wrapper(*args, **kwargs)
129 elif positional_parameters_enforcement == POSITIONAL_WARNING:
130 logger.warning(message)
--> 131 return wrapped(*args, **kwargs)

File c:\Users\andri\Pythonenvs\googleapi\lib\site-packages\googleapiclient\http.py:593, in MediaFileUpload.init(self, filename, mimetype, chunksize, resumable)
591 self._fd = None
592 self._filename = filename
--> 593 self._fd = open(self._filename, "rb")
594 if mimetype is None:
595 # No mimetype provided, make a guess.
596 mimetype, _ = mimetypes.guess_type(filename)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte

Using the following code:

The code:

Upload file to Google Drive

credentials = Credentials.from_authorized_user_info(info={"client_id": GOOGLE_CLIENT_ID, "client_secret": GOOGLE_CLIENT_SECRET, "refresh_token": GOOGLE_REFRESH_TOKEN})
service = googleapiclient.discovery.build('drive', 'v3', credentials=credentials)

media = MediaFileUpload(screenshot,mimetype='image/png',)
file_metadata = {'name': f'{adid}.png', 'parents': [drive_folder_id]}

try:
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
print(f'File ID: {file.get("id")} uploaded successfully to folder ID: {drive_folder_id}')
except HttpError as error:
print(f'An error occurred: {error}')
file = None

NOTE: sceenshot is in bytes format

If I change to io.BytesIO(screenshot) I get the error:


TypeError Traceback (most recent call last)
g:\My Drive\xFiles\Work\ReMedia\KID\MIO52\Python\workspace.ipynb Cell 19 in <cell line: 6>()
3 credentials = Credentials.from_authorized_user_info(info={"client_id": GOOGLE_CLIENT_ID, "client_secret": GOOGLE_CLIENT_SECRET, "refresh_token": GOOGLE_REFRESH_TOKEN})
4 service = googleapiclient.discovery.build('drive', 'v3', credentials=credentials)
----> 6 media = MediaFileUpload(BytesIO(screenshot),mimetype='image/png',)
7 file_metadata = {'name': f'{adid}.png', 'parents': [drive_folder_id]}
10 try:

File c:\Users\andri\Pythonenvs\googleapi\lib\site-packages\googleapiclient_helpers.py:131, in positional..positional_decorator..positional_wrapper(*args, **kwargs)
129 elif positional_parameters_enforcement == POSITIONAL_WARNING:
130 logger.warning(message)
--> 131 return wrapped(*args, **kwargs)

File c:\Users\andri\Pythonenvs\googleapi\lib\site-packages\googleapiclient\http.py:593, in MediaFileUpload.init(self, filename, mimetype, chunksize, resumable)
591 self._fd = None
592 self._filename = filename
--> 593 self._fd = open(self._filename, "rb")
594 if mimetype is None:
595 # No mimetype provided, make a guess.
596 mimetype, _ = mimetypes.guess_type(filename)

TypeError: expected str, bytes or os.PathLike object, not BytesIO

Any suggestions>?

Specifications

  • Python version (3.10)
  • OS (Windows)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants