yassine
Upload file to google cloud storage
I want to upload a file to google cloud storage with my phoenix application, i found some github project but i didn’t understand them very well, can any one help me to how doing that please !
Most Liked
jhefreyzz
I once attempted to use GCS for file uploading using elixir google api but I change a cloud provider since I needed a ecto integration and waffle and s3 integrates well.
As for your question please kindly read the README of elixir google api.
- Add
google_api_storageandgothto your dependencies - Get your google client id and secret
- export the client id and secret as shown below:
export GOOGLE_CLIENT_ID=[YOUR-OAUTH-CLIENT-ID]
export GOOGLE_CLIENT_SECRET=[YOUR-OAUTH-CLIENT-SECRET]
- Perform requests
# Obtain an access token using goth
{:ok, token} = Goth.Token.for_scope("https://www.googleapis.com/auth/cloud-platform")
conn = GoogleApi.Storage.V1.Connection.new(token.token)
# Call the Storage V1 API (for example) to list buckets
{:ok, response} = GoogleApi.Storage.V1.Api.Buckets.storage_buckets_list(conn, project_id)
# Print the response
Enum.each(response.items, &IO.puts(&1.id))
You can also checkout the example repo: https://github.com/GoogleCloudPlatform/elixir-samples/tree/master/storage
mruoss
Is the file generated by the server or by the user? If the file is uploaded by the user, I would not bother uploading the file to your server and then forwarding it to the GCS bucket. Instead, I would generate a signed URL on the server, send that to the browser and let the browser upload the file directly to the bucket.
I describe two variants for creating such a signed URL on gcs_signed_url. The two variants differ in whether your application is running on the Google cloud itself or not.
jhefreyzz
Please kindly search on your own how to generate google client id and secrets, for starters
- you head over to API and services
- click on Credentials
- click on Create credentials and select OAuth client ID
As for these two
export GOOGLE_CLIENT_ID=[YOUR-OAUTH-CLIENT-ID]
export GOOGLE_CLIENT_SECRET=[YOUR-OAUTH-CLIENT-SECRET]
after you secure you client id and secret, open a new terminal on the current project directory and type those above.
jhefreyzz
To be honest, I didn’t use OAuth2 for authentication instead I use Google service account. Do you really need to use OAuth2?
jhefreyzz
Sure, do you have the service account json file already, if not please secure it first.
Then in your terminal just type:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account.json
Then try make a request again and see if it works.







