Reputation: 4262
I want to upload files to GDrive and get the download link for all users that have the link. Currently I managed to upload files and get the download link. But I don't know how to get the download link for all users. Can anyone help me with this, please?
Upvotes: 0
Views: 2503
Reputation: 914
You have to edit the permission of the file to make it accessble for all user.
Code:
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
import multiprocessing as mp
import os
gauth = GoogleAuth()
# Creates local webserver and auto handles authentication.
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)
#if there is any error in clent_secret.json try downloading it again after enabling drive api
#now the drive is accessible through python
#Lets create a folder named 'New_folder' in gdrive
file1 = drive.CreateFile({'title' : 'New_folder',
'mimeType': "application/vnd.google-apps.folder"})
file1.Upload()
#it will create a folder in your drive
#mimeType is an argument which specifies the type of file
#Now we have created a folder, lets see how to upload a file to the folder which we have created
#We need to obtain the Id of the folder which we have created in the previous steps
folder_id = file1['id']
#lets upload an image to the folder
file2 = drive.CreateFile({'title':'filename.jpg',
'mimeType':'image/jpeg',
'parents': [{"kind": "drive#fileLink", "id": folder_id}]
#In parents argument above we need to specify the folder ID of the folder to which it has to be uploaded.
#mimeType is different for each file type, which are available in the google api documentation.
#specify the local path with the quotes in the below line
file2.SetContentFile('/home/username/Downloads/image.jpg')
file2.Upload()
#SET PERMISSION
permission = file2.InsertPermission({
'type': 'anyone',
'value': 'anyone',
'role': 'reader'})
#SHARABLE LINK
link=file2['alternateLink']
#To use the image in Gsheet we need to modify the link as follows
link=file2['alternateLink']
link=link.split('?')[0]
link=link.split('/')[-2]
link='https://docs.google.com/uc?export=download&id='+link
print link
Upvotes: 5
Reputation: 7741
It is stated in this documentation that Google Drive supports providing users direct access to a file via the URL in the webViewLink
property.
Also, the Google Drive provides you a 3 ways to download a file.
Download a file — files.get with alt=media file resource
Download and export a Google Doc — files.export
Link a user to a file — webContentLink from the file resource
Just remember that when you use webContentLink
in downloading the file, this is only available for files with binary content in Drive.
To get the direct download link for a Google Drive file, you can go to the Google Drive developers API references and use their “try it!”
API explorer form for the get
API call. In the fileId
textbox, just paste the file’s ID
and in the fields
textbox, just place webContentLink
then click “Execute”
. Below under response, in the generated JSON, the direct link that you need is called webContentLink
and looks something like this:
"webContentLink": "https://docs.google.com/uc?id=0ByP7_A9vXm17TmRYcmNScnYzS1E&export=download"
For more information, check this thread.
Upvotes: 1