You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pyiCloud release with the issue (pip show pyicloud): 0.10.2
Last working pyiCloud release (if known):
Service causing this issue:
Python version: 3.85
Operating environment (project deps/Docker/Windows/etc.): Windows 10
Traceback/Error logs
Additional information
When trying to upload a file, the DriveService class passes the file_object.name to the iCloud web service. This is OK if the code is running under the root directory but if a full path is supplied to the file open method then the file object name includes the entire path. For example:
with open("c:/myfiletoupload/test.file','rb') as infile:
print(infile.name)
The output of this is c:/myfiletoupload/test.file NOT test.file which results in the web service call failing(ObjectNotFoundException: could not find document c: under folder with id A3BF2E31-C19E-494A-95D9-A7774599B537 (NOT_FOUND)). To fix this the DriveService class needs to be modified in the following way:
line 111: "path": {"starting_document_id": folder_id, "path": os.path.basename(file_object.name),},
line 141: request = self.session.post(content_url, files={os.path.basename(file_object.name): file_object})
By using the os.path.basename for the file_object.name the file name only is passed to the web service and will not include the path.
thx
The text was updated successfully, but these errors were encountered:
Drive upload fails when not using root directory
Windows 10
pip show pyicloud
): 0.10.2Traceback/Error logs
Additional information
When trying to upload a file, the DriveService class passes the file_object.name to the iCloud web service. This is OK if the code is running under the root directory but if a full path is supplied to the file open method then the file object name includes the entire path. For example:
with open("c:/myfiletoupload/test.file','rb') as infile:
print(infile.name)
The output of this is c:/myfiletoupload/test.file NOT test.file which results in the web service call failing(ObjectNotFoundException: could not find document c: under folder with id A3BF2E31-C19E-494A-95D9-A7774599B537 (NOT_FOUND)). To fix this the DriveService class needs to be modified in the following way:
line 111: "path": {"starting_document_id": folder_id, "path": os.path.basename(file_object.name),},
line 141: request = self.session.post(content_url, files={os.path.basename(file_object.name): file_object})
By using the os.path.basename for the file_object.name the file name only is passed to the web service and will not include the path.
thx
The text was updated successfully, but these errors were encountered: