Open
Description
I have some relatively large CSV files that I am uploading to SharePoint via an io.BytesIO
instance using the following simplified method:
def write_file_bytes(self, relative_url: str, file_name: str, file_bytes: bytes) -> None:
folder: Folder = self.client_context.web.get_folder_by_server_relative_url(relative_url)
chunk_size: int = 1024 * 1024 * 15
# File bytes to IO stream
file_bytes: io.BytesIO = io.BytesIO(file_bytes)
folder.files.create_upload_session(file_bytes, chunk_size=chunk_size, file_name=file_name).execute_query()
Based on this StackOverflow question, writing the file from a io.BytesIO
is indeed possible, but the file_name and file_size should be passed as keyword arguments to chunk_uploaded
. However, even in specifying a callback that takes the file size as an argument, I still get an io.UnsupportedOperation: fileno
exception.
Uploading the file from either a byte array or an io.BytesIO
instance is necessary due to the nature of what I am doing.
Any help would be appreciated. Thanks.