ChatGPT解决这个技术问题 Extra ChatGPT

Displaying files (e.g. images) stored in Google Drive on a website

I was wondering if its possible to access/display files like images which are stored in Google Drive on a public website.

It seems that the user that created the question never used SO anymore, leaving this question without accepted answer (when there is at least one valid answer). Can the community editors fix that?
It looks like this is being deprecated: Deprecating web hosting support in Google Drive
Here's the final update from Google in Jul 2016 with alternatives: gsuite-developers.googleblog.com/2016/07/…
@wescpy, i've found this solution to work for my G-Suite account

S
Sitak

A workaround is to get the fileId with Google Drive SDK API and then using this Url:

https://drive.google.com/uc?export=view&id={fileId}

That will be a permanent link to your file in Google Drive (image or anything else).

Note: this link seems to be subject to quotas. So not ideal for public/massive sharing.


How can I get fieldId of the picture?
This works without using a public folder. The image itself must be shared as 'public'. The fileId is shown - embedded in a URL - when sharing the file.
Hi Rufo, can you please share information on the quota, like how much quota is there? Does quota mean viewing bandwidth per month? Is there a link without quota? I'm looking for public/mass sharing.
the image is shared with anyone with link? shows little icon with 2 people in GD? For me, it works.
Can anyone tell me about the quota limit for a single image id? And what could happen if the limit cross? Thanks!
M
Mori

Here's the simple view link:

https://drive.google.com/uc?id=FILE_ID

e.g. https://drive.google.com/uc?id=0B9o1MNFt5ld1N3k1cm9tVnZxQjg

You can do the same for other file types, e.g. MP3, PDF, etc.


It works! (the sharing link https://drive.google.com/file/d/2B8NbrE732XHNLThjZWZzMMVCDeVFpLVVXUkFjT3h2Qloweslz/edit?usp=sharing turned into https://drive.google.com/uc?id=2B8NbrE732XHNLThjZWZzMMVCDeVFpLVVXUkFjT3h2Qloweslz).
Drive's API upon finishing a file upload has this link in the response message: data.response.webContentLink. This will have &export=download at the end which just needs to be trimmed off.
This answer worked for me when attempting to host/use an image for my ESPN Fantasy-Football team logo... so kudos for that.
I recommend not keeping the 's' in https. It seems to cause embed issues in some scenarios, and it automatically resolves to the ssl version anyway
@pabloverd: "do I have to do that action one by one" Yes.
n
niutech

UPDATE: As was announced, Google deprecated this feature in Aug 2016. Here's the final update from Google with alternatives.

Yes, it's possible. Provided that you put your files in a public folder, you can get any file in a folder by this URL:

https://googledrive.com/host/<folderID>/<filename>

Dead link :( anyone got a new one?
@LeoLuanElezi while your edit was sound, a better edit summary would have been, "removed a dead link".
R
Rob Bednark

here is how from @ https://productforums.google.com/forum/#!topic/drive/yU_yF9SI_z0/discussion

1- upload ur image

2- right click and chose "get sharable link"

3- copy the link which should look like

https://drive.google.com/open?id=xxxxxxx

4-change the open? to uc? and use it like

<img src="https://drive.google.com/uc?id=xxxxx">

@ctf0 "its recommended to remove the http: or https: when referencing anything from the web to avoid any issues with ur server", so you advise to simply do drive.google.com ?
WORKED fine , simple
5
5 revs, 2 users 96%

EDIT : As of 2020, THIS is working. Most previous answers are outdated.

Easy Solution

All you have to do is open your file:

https://i.stack.imgur.com/Cp8kc.jpg

Then, go into your web inspector (for Chrome, Cmd-Shift-I or Ctrl-Shift-I depending on your OS) and get the link. Paste that link into your browser and it will redirect to another link. Copy the new URL. Done!

https://i.stack.imgur.com/kRYnx.jpg

What's the redirect for?

It seems that if you use the first link, it can only be accessed when signed in to your Google account. Not very helpful for other people. The second, redirected link, however, does not need you to be signed in. That's the rationale behind it.

I deleted the original file shown in the images, but I have another working example here.

I've actually checked back on my example link that I posted in my edit about a week ago, but it no longer seems to be working. It looks like these links only work temporarily, so don't use them for any kind of production environment.


Brilliant - This should be Top Voted as of 2020
The only solution that actually works. Thank you!
@DinisRodrigues just beware that the links don't last. Super useful for prototyping though
Finally! Thank you 2021!
Aptly titled and still applicable in March 2022!!
C
Community

UPDATE: As was announced, Google deprecated this feature in Aug 2016. Here's the final update from Google with alternatives.

As per April 2013 and using Chrome/webkit, the following worked for me:

1 Make a folder called e.g. "public"

2 Select that folder, right click and Share > Share. Click. Select "Anyone can access"

3 Drag and Drop a file into the folder, and let it upload.

4 Right click on the file and select Details. One of the lines in the Details-Fieldset reads "Hosting". Underneath it is an url:

https://googledrive.com/...

Drag and Drop that url into a new tab. Copy and paste the url and share or embed it anywhere you like.

One limitation is that as far as HTTP goes, only secure HTTP access seems to be possible.

Update: Another limitation is that files which Google drive can open, won't be accessible that way. That is, clicking on "Details" won't show an Google-drive url.

To overcome this:

right click on the file in question and select "Open with>Manage apps":

https://i.stack.imgur.com/SXib9.png

Untick the file-associated apps here

Optional: Reload Google Drive

Right click on the file and select "Details"

Proceed as in step #4

Note: An alternative to the procedure above, is uploading the file with an extension that Google Drive cannot open/is not associated.


Update to the update -- it was deprecated in 2015 and removed in 20166
And hence this answer should be deleted
R
Robert Sinclair

Working solution for Workspace (G suite) users in June 2022

Some embed codes do not show the img unless the viewer is logged into gmail, the following works like a regular image on your webhost:

Share item publicly (make sure it says ''Anyone on the internet with this link can view): either the image itself (or the folder where the image resides) then copy the link the following way

https://i.stack.imgur.com/wqdvO.png

Take the ID of the file and insert here:

<img src="https://lh3.googleusercontent.com/d/[ID_OF_THE_FILE]">

Result (if you see the dog below it means the solution still works):


This comment saved me a lot, Thank you
does this load image in safari browsers?
@fingers10 yes, i do see the dog in Safari also
J
Jeff Johnson

If you want to view the file in the browser, it's also possible using a similar method to the one provided by rufo and Torxed:

https://drive.google.com/uc?export=view&id={fileId}

I don't understand. If I want to view the gdoc in the browser, I just type in its URL.
y
y2k-shubham

Specifically for G-Suite users . As reported in point 3 here, you can use this URL for hosting image

https://drive.google.com/a/domain.com/thumbnail?id=imageID

with following replacements

domain: replace with your company's GSuite domain like pikachu

imageID: replace with the image id / file id

The prerequisite here is that image should have been shared via drive to target audience (either with each person individually or maybe across the org)

https://i.stack.imgur.com/9Zx5x.png

If you face problems with size of rendered image, use following options as mentioned here

https://drive.google.com/a/domain.com/thumbnail?id=imageID&sz=w{width}-h{height}

with following replacements (in addition to domain and imageID replacement)

{width}: write the width in pixels (without braces) like 300

{height}: write the height in pixels (without braces) like 200


you my friend are a star! <3
can I add the previous and next link, once I click the image
N
Nicolas Garnier

I think it is possible but only for a short time

What you have to do is set the Access Control List of the file to Public Read-Only (or Public Read/Write). You can do that programmatically using the Google Document List API, or manually through the "Share" button on the Drive image viewer.

Then you can get the URL to the image programmatically by either using the Google Document List API or using the Google Drive API (i.e. file.getDownloadUrl() in Java). You can also easily get a link to the image manually by right clicking on the image in the Google Drive default image viewer.

The problem is that this link has a limited time to live, so it will work for a little while and then stop working.

Basically the URL of the image file stored in Drive should be accessible without any authentication once it has been set shared publicly but that URL is going to change at some point. We might find a solution to this in the future like providing a permanent URL that will redirect to these changing URL but no promises...


It would be nice knowing in advance how long a link lives. Is it fix or it depends on other parameters?
By experience if I ask the engineer what that value is he will reply: "It is currently XXX but don't tell them because we might change it anytime :)" I'm sure you can experiment easily to find this value though ;)
Currently a public, even if expiring, link to a resource it's what we need, beside application sandboxes, for which data already belongs to a oauth2 app without messing with ACLs.
W
Watchmaker

From google drive help pages:

To host a webpage with Drive: Open Drive at drive.google.com and select a file. Click the Share button at the top of the page. Click Advanced in the bottom right corner of the sharing box. Click Change.... Choose On - Public on the web and click Save. Before closing the sharing box, copy the document ID from the URL in the field below "Link to share". The document ID is a string of uppercase and lowercase letters and numbers between slashes in the URL. Share the URL that looks like "www.googledrive.com/host/[doc id] where [doc id] is replaced by the document ID you copied in step 6. Anyone can now view your webpage.


b
beppe9000

Per this blog post, a currently working solution is:

<img src=”https://drive.google.com/uc?id=[imageIdGoesHere]" />

Test here

https://drive.google.com/uc?id=1m-uOoFzHn4oUGlEsDSEfPBbJ2QhBJzlM

This is verified to work as of 26th of April, 2021. No shared folder or login is required. But a publicly shared file is.


M
Mario Palumbo

This is the only direct link format without redirection (then a Permalink) and only applies to files directly visible on Google Drive (e.g. images and documents). It is not affected by the download limit and you can use it to display images on a website.

For example the sharing link:

https://drive.google.com/file/d/FILE_ID/view?usp=sharing

becomes:

https://lh3.googleusercontent.com/d/FILE_ID

lh4, lh5 and lh6 also work.


u
user3642085

Some of the previous users were close, but they were missing a step here or there.

Here is a video that shows all of the steps.

(Edit 2-Dec-14 The Below information is incorrect when it comes to the new Google Drive. For the New Google Drive follow these instructions. There are two options you can use, option 1 you can click the cog on the top right and revert to the old google drive, IF you revert, use the instructions after "End Edit)" . Option 2 or you can follow the work around I found. If I find a better way than this I will update it, but here is what I have found that works.


The full link will look like this "https://googledrive.com/host/(folder id)
Part one of your link that you need is "https://googledrive.com/host/" for the second half you will need to navigate to the file you would like to share.
Once you are in the folder with the file you would like to share, look at the link above
(Example 1 https://drive.google.com/drive/u/0/#folders/0B3UALYkiLexYSXZlcldoU2NpYXM )
(Example 2 https://drive.google.com/drive/u/0/#folders/0B3UALYkiLexYSXZlcldoU2NpYXM/0B3UALYkiLexYRkNnOVhsUVozRU0)
In both of these above examples, the "Folder ID" you need for sharing is the last group of letters and numbers after the "/" so in example one, it is "0B3UALYkiLexYSXZlcldoU2NpYXM" in example two it is "0B3UALYkiLexYRkNnOVhsUVozRU0"

In the examples I used, example 1 was a folder on my drive, and example 2 was a folder inside that first one, that is why it has the entire first link before the second.
We only need the section after the "/" furthest to the right.


So now that you have your "Folder ID", take the above formula "https://googledrive.com/host/(folder id)"
Example 1 https://googledrive.com/host/0B3UALYkiLexYSXZlcldoU2NpYXM
Example 2 https://googledrive.com/host/0B3UALYkiLexYRkNnOVhsUVozRU0

Great, now that you have this link, open it in a new page. It will direct you to the shared folder. Once there you can either right click on any file and select "Copy link address" or you can click any file in that folder and it will take you to the hosted image, the URL at the top of the page is the hosting URL.

That is the how you do it. It is quite annoying, and personally it seems a whole lot easier to just revert to the old google drive.

I will try to make a new tutorial video ASAP

Let me know if this does not work for you and what problem you are experiencing.

End Edit)

https://www.youtube.com/watch?v=QmN22LMPdDk&feature=youtu.be

Or you can just follow the written ones below.

These pictures go with the ones listed in the steps.

https://googledrive.com/host/0B3UALYkiLexYSXZlcldoU2NpYXM/

Create a Folder on your Google Drive that you would like to use for sharing images. Select that folder and go to the sharing options. Change the "Who has access" options from "Specific People" to "Public on the web" All images placed in folder will have a hosting link on them shown in Step 4 (Images : Change Folder Option.png, Change folder option 2.png, and Change folder option 3.png) place an image in that folder. select the image you would like to share and look at the details section (usually on right hand side) for a section labeled "Hosting" you should find a link that starts with "googledrive.com/host/(random numbers and digits that are the ID for that folder)/(file name)" Use that link to share your images. You can use that link to embed them into other websites. (Images: Change folder option 4.png and Change folder option share.png)


J
Jarzan

Vetea, if you take the link from picture URL, it does not work, but if you take it from the field "Direct Link" it should work. I have used and tested it in multiple occasions.


c
charri

A very useful api/url I found is:

imageId -> the file ID

width, the desired width (cannot be greater than image resolution width), must be integer for it to work

height, the desired height (cannot be greater than image resolution height), must be integer for it to work

https://drive.google.com/thumbnail?id=${imageId}&sz=w${width}-h${height}

Note: the api/url will keep the aspect ratio so it will stop at whichever dimension is met first


S
Sax

There is a filetype option in the Google Drive API. You could, maybe, check if that resolves to a valid image. I'd look at an option where if the filetype gives me an invalid image, then get a new direct URL for the file. I haven't figured out exactly how to do this though, but maybe that's a path to try.


J
Jessica Potter

You can do it directly from Drive & Gmail. Here's how:

1.Upload an image to Google drive and set permissions for viewing (can be public OR anyone w/ link)

Go to Gmail>Compose. Select the + next to attachment icon. Select drive icon (triangle shape) Navigate to your image and right-click copy image url Paste into web browser or embed on webpages as needed.


This only gives you a link to the entire document. There's no point at all in doing this; you already have the document's URL when you're editing or viewing it. Folks, stop posting answers on how to find the document's URL! We already know its URL.
T
T.Todua

For images, open an image in google viewer. i.e.

Method 1

https://docs.google.com/file/d/0Bz7qe_olclTwWDNJRDRmb1pJamM/edit

then view source> find word "texmex-thumb" and aside it there will be link.


x
x89

1.Change the settings of your picture to public.

2.Get its shareable link.

3.Go to this website and generate a direct download link.

Worked for me!


D
Demotte

You can follow below steps to embed the files you want to your website.

Find the PDF file in Google Drive Preview the PDF file in Google Drive Pop-out the Google Drive preview Use the More actions menu and choose Embed item Copy code provided Edit Google Sites page where you want to embed Open the HTML Editor Paste the HTML embed code provided by the Google Drive preview Use the Update button and Save the page

References: https://www.steegle.com/websites/google-sites-howtos/embed-drive-pdf


V
Vijay Rumao

Solution provided by Niutech worked for me i.e.

http://googledrive.com/host/<folderID>/<filename>

But there are 2 outstanding issues

You cannot have 2 files with the same name in the same folder in the drive else this link won't work. It is not yet clear but Google seems to be planning to deprecate image hosting via drive. please see the link below. https://support.google.com/richmedia/answer/6098968?hl=en


Google has not given any timeline on when will this be deprecated? I was planning to integrate this with my website but not so sure after reading this!
C
Community

Function title: goobox

tags: image hosting, regex, URL, google drive, dropbox, advanced

return: string, Returns a string URL that can be used directly as the source of an image.

when you host an image on google drive or dropbox you can't use the direct URL of your file to be an image source.

you need to make changes to this URL to use it directly as an image source.

goobox() will take the URL of your image file, and change it to be used directly as an image source.

Important: you need to check your files' permissions first, and whether it's public.

live example: https://ybmex.csb.app/

cconst goobox = (url)=>{

    let dropbox_regex = /(http(s)*:\/\/)*(www\.)*(dropbox.com)/;
    let drive_regex =/(http(s)*:\/\/)*(www\.)*(drive.google.com\/file\/d\/)/;

    if(url.match(dropbox_regex)){
       return url.replace(/(http(s)*:\/\/)*(www\.)*/, "https://dl.");
    }
    if(url.match(drive_regex)){
        return `https://drive.google.com/uc?id=${url.replace(drive_regex, "").match(/[\w]*\//)[0].replace(/\//,"")}`;
    }
    return console.error('Wrong URL, not a vlid drobox or google drive url');
}
let url = 'https://drive.google.com/file/d/1PiCWHIwyQWrn4YxatPZDkB8EfegRIkIV/view' 

goobox(URL); //  https://drive.google.com/uc?id=1PiCWHIwyQWrn4YxatPZDkB8EfegRIkIV 

It is better to replace www.dropbox with dl.dropboxusercontent. It is redirected to this link
b
binwilly

Con can disable javascript in your browser open the image file and in the view page source or right click on the image, you will see the image link. ( check share preference before )


That would be a neat trick, but if you disable javascript and try to open a google doc, you get the message, "JavaScript isn't enabled in your browser, so this file can't be opened. Enable and reload."
S
Sagar Munjal

However this answer is simple, infact very simple and yea many have mentioned it that simply put the id of image into the following link https://drive.google.com/uc?export=view&id={fileId}

But however easy that is, I made a script to run in the console. Feed in an array of complete sharable links from google drive and get them converted into the above link. Then they can be simply used as static addresses.

array = ['https://drive.google.com/open?id=0B8kNn6zsgGEtUE5FaGNtcEthNWc','https://drive.google.com/open?id=0B8kNn6zsgGEtM2traVppYkhsV2s','https://drive.google.com/open?id=0B8kNn6zsgGEtNHgzT2x0MThJUlE'] function separateDriveImageId(arr) { for (n=0;n