Content disposition when downloading from google cloud storage - google-cloud-storage

I would like to use a direct link to https://storage.cloud.google.com/mybucket/myfile.pdf?response-content-disposition=attachment;%20filename=myfile.pdf (this is the link that gets created when browsing the GCS in the Cloud Console itself.
The work-around is going to https://www.googleapis.com/storage/v1beta2/b/mybucket/o/myfile.pdf?alt=media but that's obviously not a very pretty URL.
Has the API changed any that response-content-disposition is actually something else now?

Related

Cannot download google credentials json file

At this website
https://cloud.google.com/life-sciences/docs/how-tos/getting-started#download_credentials_for_api_access
it says:
After creating your credentials, download the client_secret.json file by going to the Credentials page in the Cloud Console and clicking Download JSON file_download.
The credentials page is hyperlinked. But when you go to that page there is no such button named download json file. Here is a screenshot of the page:
I really wish Google would learn to write clear documentation.
I should also add that the website has the following cryptic instructions:
Use this key in your application by passing it with key=API_KEY parameter.
I don't know what it means to pass a key. If the writers would have provided an example that would certainly have helped. I have the key and that might solve my problem, I just don't know what to do with it.
This may be late, but this may help if anyone is still having this issue
After creating the service account
Select/click the from the account listing
Goto the keys tab
Click Add Key and select create key
Then select JSON and the file will be downloaded
refer here https://cloud.google.com/docs/authentication/getting-started?authuser=1#creating_a_service_account
You haven't made a OAuth credential.
Click Create credentials > Oauth Client ID.
Set the application type to Other and complete the form.
After creating your credentials, download the client_secret.json file by going to the Credentials page in the Cloud Console and clicking Download JSON file_download. Securely store the file in a location that only your application can access.
The write of the documentation linked to the wrong page. He should have linked to
https://console.cloud.google.com/apis/credentials/
But instead linked to
https://console.developers.google.com/apis/credentials
If you can download the json file with the first link then more instructions will be needed. The second link though allows you to download the json file.
After creating the keys and service account, you can download the Json file on the end right side of OAuth key IDs. Check the picture below for the location of the button.

Remove the auto download of a URL that points to a google bucket

I have files stored on google cloud storage. Google provides me a URL to access this files, but when I access this URL the file is auto downloaded. I wish to know if it is possible to remove or don't allow this auto download when we access the file URL. ;)
The download feature is handled by the client.
Calling the URL for an object stored in a bucket will return the object in the body of the HTTP request, and the client will choose what to do with this data.
If you use a web browser, the choice of downloading or not a file is usually given by the header Content-Type. In general, there are some MIME types that will be displayed on the browser itself (according to Chrome help, videos, images, PDFs and web pages will be displayed directly on the browser), while others will download directly.
To modify the MIME type of the files stored in a bucket, you must change it's metadata, so the browser will behave in the way you want.

After uploading an image to google cloud, how can I get a link to that image?

After uploading an image, I get back metadata that has a mediaDownloadLink that will download the file when accessed. Is there a way to get a link that will display the image in the browser without downloading it?
In general, any object you set to be publicly accessible (which presumably you wanted to do to use it to host images on a website), you can then access with https://storage.googleapis.com/<bucket>/<object>. You can see this link also if you go to the cloud console and make an object publicly viewable and look for the Public link you can click.
If you have problems with the link downloading instead of displaying by itself in a browser, you may need to make sure the content-type header is set correctly; for example if using ByteArrayContent to upload data using the Java API, you'll want to set a string like "image/jpeg" in its constructor for "type".

An object in Google Cloud Storage which acts as a "redirect" or "symlink"

I'm looking to move an existing website to Google Cloud Storage. However, that existing website has changed its URL structure a few times in the past. These changes are currently handled by Apache: for example, the URL /days/000233.html redirects to /days/new-post-name and /days/new-post-name redirects to /days/2002/01/01/new-post-name. Similarly, /index.rss redirects to /feed.xml, and so on.
Is there a way of marking an object in GCS so that it acts as a "symlink" to another GCS object in the same bucket? That is, when I add website configuration to a bucket, requesting an object (ideally) generates a 301 redirect header to a different object, or (less ideally) serves the content of the other object as its own?
I don't want to simply duplicate the object at each URL, because that would triple my storage space. I also can't use meta refresh headers inside the object content, because some of the redirected objects are not HTML documents (they are images, or RSS feeds). For similar reasons, I can't handle this inside the NotFound 404.html with JavaScript.
Unfortunately, symlink functionality is currently not supported by Google Cloud Storage. It's a good idea though and worth considering as a future feature.

Upload a hosted image with Facebook's Graph API by url?

So, I'm using the Facebook Graph API to upload a photo. Using curl, it goes something like this:
curl -F 'access_token={some access token}'
-F 'source=#/some/file/path/foo.png'
-F 'message=This is a test of programatic image uploading'
https://graph.facebook.com/me/photos
Now, this works fine if I have the file on the machine I'm making the request from. The issue is that the system I'm working on gets the image as a url (say, "http://example.com/foo.png"). I'd rather not download the image from example.com to my server just to upload it to facebook, since I have no need to keep it other than that. Is there any way I can just pass the url to facebook, or is this impossible?
(-F 'source=#http://example.com/foo.png' does not work)
In the past, we've simply downloaded the file locally to the server, then handled the upload and unlinked it. This way we're also able to be sure that the asset was available (servers/connections flaking out) to be uploaded in the first place. I don't believe you can initiate an upload and the media to come from a third-party (may be wrong though).