Utilizzo di Cloud Storage

Puoi utilizzare Cloud Storage per archiviare e pubblicare file, come filmati o immagini o altri contenuti statici.

Questo documento descrive come utilizzare la libreria client di Google Cloud nell'app per archiviare dati e recuperare dati da Cloud Storage.

Prima di iniziare

  • Segui le istruzioni in "Hello, World!" per Ruby su App Engine per configurare l'ambiente e il progetto e per comprendere come sono strutturate le app Ruby in App Engine. Annota e salva l'ID progetto, perché è necessario per eseguire l'applicazione di esempio descritta in questo documento.

  • Assicurati di creare un bucket di Cloud Storage per la tua applicazione richiamando il seguente comando:

    gsutil mb gs://[YOUR_BUCKET_NAME]
    
  • Rendi il bucket pubblicamente pubblico in modo che possa gestire file:

    gsutil defacl set public-read gs://[YOUR_BUCKET_NAME]
    

Scarica l'anteprima

Per clonare il repository:

git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples/
cd ruby-docs-samples/appengine/storage

Modifica la configurazione del progetto e installa le dipendenze

In app.yaml, imposta GCLOUD_STORAGE_BUCKET su Cloud Storage che hai creato in precedenza per il tuo progetto.

runtime: ruby
env: flex
entrypoint: bundle exec ruby app.rb

env_variables:
  GOOGLE_CLOUD_STORAGE_BUCKET: <your-bucket-name>

Tieni presente che devi includere la libreria gcloud in Gemfile per utilizzare le funzioni di Cloud Storage.

source "https://rubygems.org"

gem "google-cloud-storage"
gem "sinatra"

Codice dell'applicazione

L'applicazione di esempio presenta una pagina web che chiede all'utente di fornire un file da archiviare in Cloud Storage. Quando l'utente seleziona un file e fa clic su Invia, il gestore del caricamento carica il contenuto del file in un blob e lo scrive in Cloud Storage.

Nota che, dopo il caricamento in Cloud Storage, viene restituito l'URL pubblico del file, che puoi utilizzare per pubblicare il file direttamente da Cloud Storage. Conserva questo valore nella tua app per usi futuri.

require "sinatra"
require "google/cloud/storage"

storage = Google::Cloud::Storage.new
bucket  = storage.bucket ENV["GOOGLE_CLOUD_STORAGE_BUCKET"]

get "/" do
  # Present the user with an upload form
  '
    <form method="POST" action="/upload" enctype="multipart/form-data">
      <input type="file" name="file">
      <input type="submit" value="Upload">
    </form>
  '
end

post "/upload" do
  file_path = params[:file][:tempfile].path
  file_name = params[:file][:filename]

  # Upload file to Google Cloud Storage bucket
  file = bucket.create_file file_path, file_name, acl: "public"

  # The public URL can be used to directly access the uploaded file via HTTP
  file.public_url
end

Per ulteriori informazioni

Per informazioni complete su Cloud Storage, consulta la documentazione di Cloud Storage.