Open Pikamander2 opened 4 years ago
I am also having this problem. I can't see how the client functions in the docs of this repo correspond to the requests in the Microsoft docs.
@Pikamander2 Uploading a file to drive, or updating an existing file should be handled properly now that #23 got merged I think
@Disruption - That's great to hear. Would it be possible to add a simple example of how to upload a file to the documentation?
Oh, I guess it would be this one?
response = client.files.drive_upload_new_file("/Pictures/upload.jpg", "/mnt/c/Users/i/Downloads/image1.jpg")
@Pikamander2 I can try to provide a PR adding that, but it should be fairly straight-forward, like:
filename = "/pictures/my_image.png"
file_path = "/var/www/data/img/my_image.png"
client.files.drive_upload_new_file(filename, file_path)
Note: If you have a File instance you can use the associated methods along with os.path to get the right values Note2: If you have in-memory data, you can create a NamedTemporaryFile with that data and use it to perform the upload with it's path and name
Oh, I guess it would be this one?
response = client.files.drive_upload_new_file("/Pictures/upload.jpg", "/mnt/c/Users/i/Downloads/image1.jpg")
Yes, that would be the one, filename is the full path it will have on remote, and file_path is the local path where your file is.
@Disruption - I'm trying to set up a simple example script right now, but looking through the "Usage" section, but it seems pretty light on detail in terms of getting things set up, so I'm struggling to get it working.
These first four lines appear to work without throwing any errors:
from microsoftgraph.client import Client #pip install microsoftgraph-python
client_id = 'my-client-id-from-portal-azure-com'
client_secret = 'my-client-secret-from-portal-azure-com'
client = Client(client_id, client_secret, account_type='common')
But after that, I'm not entirely sure what I need to do.
If I add this fifth line:
response = client.files.drive_upload_new_file("picture.png", "/mnt/c/Users/i/Downloads/picture.png")
Then I get this error:
AttributeError: 'Files' object has no attribute 'drive_upload_new_file'
If I add this fifth line:
response = client.users.get_me()
Then I get this error:
microsoftgraph.exceptions.TokenRequired: You must set the Token.
My goal here is just to automate the uploading of some files from my PC to my OneDrive folder.
Hello @Pikamander2
Apart from the client id and client secret you need a token from outlook (a refresh token that comes from the login is the best) Then you need to call "refresh_token" with that token to get an actual token, and set that token as token to the client
Regarding files, that's because those methods (for uploading and updating files) are on the new release that hasn't come out yet
Cheers!
Does this library support uploading files to OneDrive? Are there any examples?
Here are the relevant API docs: https://docs.microsoft.com/en-us/graph/api/driveitem-createuploadsession?view=graph-rest-1.0