Ich wollte den HTML-Code einschließlich der Bild-URL so speichern, wie er sich in der Datenbank befindet, und ihn mit einem Editor wie WYSIWY roh anzeigen.
Wenn Sie service_url
direkt speichern, läuft das Zugriffstoken ab und Sie erhalten die folgende Fehlermeldung:
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>
Erstellen Sie ein Modell für Assets, um eine URL zum Generieren und Anzeigen einer service_url mit einem Zugriffstoken vorzubereiten.
asset.rb
class Asset < ApplicationRecord
has_one_attached :image
end
Geändert, um Bilddaten mit Show des Controllers zu senden.
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
Durch Speichern der folgenden URL in der Datenbank war es möglich, das Bild über den Anwendungsserver anzuzeigen, ohne abzulaufen.
...
<img src="http://localhost:3000/assets/2" alt="Image">
...
Recommended Posts