Google Direct Download Link File Type - download

Is there a way to tell what type of file a google downloadlink will produce? This type of link doesn't tell me anything about the file type (.mov? .png? .jpg?)
(link below is an example)
https://drive.google.com/u/0/uc?id=2D-99h4-CLMNPO!1234567&export=download

Unless the file is a Google Docs, Sheets, Slides, etc... that has a special link, e.g. https://docs.google.com/document/d/FILE-ID, the rest of the file types are just bundled as a generic link like https://drive.google.com/file/d/FILE-ID.
You can view the file type before downloading by using View Mode:
https://drive.google.com/file/d/FILE_ID/view

Look at the mimeType property of the file.
See https://developers.google.com/drive/api/v3/reference/files

Related

How can I change the file path of files referenced via the download role to not use a hashed folder?

I want to provide a link to a file in my project, but I want this link to be human readable and perma-ish.
Doing this:
Link to file for reference :download:`myfile.json <../myproject/myfile.json>`.
Generates a link that looks like this:
...../myproject/docs/_build/html/_downloads/b4c73f3851c188db23a20daeed2c/myfile.json
Do I have control over this? I want the link to just be this:
...../myproject/docs/_build/html/_downloads/myfile.json
I would actually prefer the link be in the root so it's just:
...../myproject/myfile.json
The download role does what it says in the documentation, i.e., it creates links with a unique hash. I don't see a way around it unless the implementation is changed.
But
I would actually prefer the link be in the root
In this particular case we can (ab)use html_extra_path, adding this in conf.py
html_extra_path = ['../myproject/myfile.json']
and refer to the file with a regular hyperlink:
Link to file for reference `myfile.json <myfile.json>`_.
The file is then necessarily in the root folder (of the built HTML documentation), as that's what html_extra_path does. It cannot be put in a subfolder such as _downloads.

File ID different from the URL File ID - Google Drive API

I'm trying to access a file in a Google Drive directory but linking to it using the File Id provided by the API it says that i don't have permission. What i saw is that the File Id in the URL is different from the one who returns from the API. Why?
Using the test page of the Google Api it returns a "Not Found" error(404) and not the "No Permissions" error. Anybody knows how to get this ID(same of the url) that links to the file instead of the File's ID
Edit: Found that the File Resource has a property called "webViewLink" is it the link to the file instead of using the ID?
When you are trying the Drive API, you can set using fields property what values you want to return from your call as it is shown in this image:
webViewLink will return you the link that's shown when you open the file in your browser.
id will return you the ID of the file.
I specified some values, but you can see HERE all the values you could use and if you put "*" you will return all of them. Also, I didn't show in the image the id of the file to not share that info.
HERE you can see why you are getting that error. Surely, you don't have enough permitions because you have already checked that it exists for what I understood in your question.

Download Using Google Drive API with the original filename and extension

As the Google Drive API document said about downloading a file:
https://www.googleapis.com/drive/v3/files/FILEID?alt=media%26key=API_KEY
If we paste this link to Chrome or Safari It will start downloading.
But the problem is
The name is changed to FIELDID
The extension is gone
For example
I have file mywork.fbx I upload to google drive, and the FileID is ABCDEFG
Then I go to the link below.
https://www.googleapis.com/drive/v3/files/ABCDEFG?alt=media%26key=MYAPIKEY
I got the file that name is ABCDEFG without extension
It should be mywork.fbx or anyname.fbx not just ABCDEFG
Tried
add &download="mywork.fbx"
use PHP header('Content-Disposition: attachment; filename="mywork.fbx"'); filename is mywork.fbx but the bandwidth is also mine too It's not only Google Drive!!!
$file_url = 'https://www.googleapis.com/drive/v3/files/ABCDEFG?alt=media&key=KEY';
header('Content-Disposition: attachment; filename="mywork.fbx"');
readfile($file_url);
check articles in stack overflow but I can't found the right one
You want to download a file which is not Google Docs using the browser.
You want to download a file with the filename which has the filename and extension of the original file.
You are using the API key.
In this case, the file is publicly shared.
If my understanding is correct, how about this answer? In this answer, webContentLink is used as the endpoint. The official document says as follows.
webContentLink:
A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
Modified endpoint:
Please try to access the following endpoint with your browser.
https://drive.google.com/uc?export=download&id={fileId}
When you use this, please set the file ID. In this case, the file is not Google Docs.
When it accesses to the above endpoint, the file with the filename can be retrieved.
Reference:
Files of Drive API
If I misunderstood your question and this was not the direction, I apologize.
Look at the originalFilename property of https://developers.google.com/drive/api/v3/reference/files. You can use that in a content disposition header, see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

Detecting file type

What is the best way to find the file mime type of remote file in ruby on rails application (eg. I have a file located in s3 and want to check its file type, I don't think checking extension of file is a good idea).
To be specific, I want to find whether the given media is video or audio.
There's a library called ruby-filemagic that can check the content of the file and return the mime type. However, it required to access and read the file and it can be an issue if you need to fetch the content of the file from a remote source.
Please note that in the specific Amazon S3 case, you can also store the mime type of the file to Amazon S£ as object metadata when you upload the file itself. I strongly recommend you to do this, so that you can easily retrieve the metadata and search for the given attribute, instead of guessing it from the file.

Programatically retrieve an attachment stored on a note on a CRM 4.0 entity

How would you suggest working with files that is stored on the note of a entity in Crm. Could you write a generic method that will enable you to access any type of file? Or would it be better to have a method for dealing with each type of file?
For example, we are going to be saving a mix of swf files and xml files on the entity, so would it make sense to have a method each for example:
GetXmlFilesOnAccount(accountid)
GetSwfFilesOnAccount(accountid)
When you upload an attachment to CRM the mimetype is also saved as part of the record information.
The following link contains a nice example of how to download the attachemt using a single method. http://crmscape.blogspot.com/2009/10/ms-crm-40-sending-attachments-to.html
The post is missing the actual query needed to retrieve the annotations but you can tell what columns are required from the method signature.
My suggestion using your methods:
* GetXmlFilesOnAccount(accountid)
* GetSwfFilesOnAccount(accountid)
Retrieve account activitypointers by regardingobjectid(in your case accountid guid)
Loop through returned activitypointers
Get attachments for each activitypointer (activitypointer.activityid = activitymimeattachment.activityid)
Store attachments (disk, etc)
You don't even need two methods. You can retrieve all attachment file types for a given note (annotation) with a single method.
Hope this helps.
I recently started an Open Source Project on CodePlex to accomplish exactly that. Feel free to check out the Project's Web Page at:
http://crmattachdownload.codeplex.com/
You can also view the source code under the "Source Code" tab of that same page.
Pete

Resources