Je voulais enregistrer le HTML, y compris l'URL de l'image, tel qu'il est dans la base de données et l'afficher brut avec un éditeur tel que WYSIWY.
Si vous enregistrez directement service_url
, le jeton d'accès expirera et vous obtiendrez l'erreur suivante:
https://storage.googleapis.com/xxx/6qk30zadasnfkansfalksj34gq?GoogleAccessId=...
<Error>
<Code>ExpiredToken</Code>
<Message>The provided token has expired.</Message>
<Details>Request signature expired at: 2020-09-30T19:07:20+00:00</Details>
</Error>
Créez un modèle pour les actifs afin de préparer une URL pour générer et afficher un service_url avec un jeton d'accès.
asset.rb
class Asset < ApplicationRecord
has_one_attached :image
end
Changé pour envoyer des données d'image avec le spectacle du contrôleur.
assets_controller.rb
class AssetsController < ActionController::Base
# GET /assets:id
def show
asset = Asset.find(params[:id])
send_data asset.image.download, filename: asset.image.filename.to_s, content_type: asset.image.content_type
end
end
En enregistrant l'URL suivante dans la base de données, il était possible d'afficher l'image via le serveur d'application sans expiration.
...
<img src="http://localhost:3000/assets/2" alt="Image">
...
Recommended Posts