Domanda

Ho un'applicazione Rails impostato in modo che quando un utente carica un'immagine, viene inviato direttamente a S3 di Amazon. Devo specificare un indirizzo di reindirizzamento nel codice del modulo. Dopo il caricamento immagine finita, Amazon reindirizza l'utente a www.redirect_address.com/?bucket=[BUCKET]&key=[KEY]&etag=[ETAG]

Ho bisogno di informazioni bucket e key per elaborare l'immagine, ma c'è un modo per l'utente di non vedere tutti i parametri della barra degli indirizzi. Un modo in cui posso ancora ottenere tutto ciò che informazioni e tutto l'utente vede è www.redirect_address.com

Grazie!

Tim

È stato utile?

Soluzione

Un approccio buono qui è quello di utilizzare lo streaming da un server Web front-end attraverso addons file x di invio (vedi: nginx xsendfile o apache mod_xsendfile ), in rotaie avrai un'azione come:

def avatar
  if @user.avatar?
    response.headers["X-Accel-Redirect"] = @user.s3_avatar_url
    head :ok
  else
    head :error # or display a default image , whatever you want here
  end
end

E questo set di un http intestazione X-Accel-Redirect che viene inviato a apache / nginx dal server app, che una volta che hai linkd del modulo sopra installato, whill dicono al web server per lo streaming di file direttamente al cliente, ma il url per loro rimane la stessa come una richiesta normale per la vostra applicazione. (/ utenti /: id / avatar o qualsiasi altra cosa) perché non c'è alcun redirect

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top