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

OneDrive uploads #8

Open
Pikamander2 opened this issue Apr 16, 2020 · 8 comments
Open

OneDrive uploads #8

Pikamander2 opened this issue Apr 16, 2020 · 8 comments
Assignees

Comments

@Pikamander2
Copy link

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

@ingmferrer ingmferrer self-assigned this May 22, 2020
@chrissyast
Copy link

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.

@Disruption
Copy link
Contributor

@Pikamander2 Uploading a file to drive, or updating an existing file should be handled properly now that #23 got merged I think

@Pikamander2
Copy link
Author

@Disruption - That's great to hear. Would it be possible to add a simple example of how to upload a file to the documentation?

@Pikamander2
Copy link
Author

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")

@Disruption
Copy link
Contributor

Disruption commented Feb 19, 2022

@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

@Disruption
Copy link
Contributor

Disruption commented Feb 19, 2022

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.

@Pikamander2
Copy link
Author

Pikamander2 commented Feb 22, 2022

@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.

@Disruption
Copy link
Contributor

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!

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

4 participants