現在、Rails5(APIモード) + Vue.jsで、SPAの実装を行っています。
現在、動的に変更可能な画像は全てbase64エンコードした形式でDBに保存しているのですが、その画像をsend_dataで配信しようとすると上手く表示できずにいます。
実装は以下です(このStackOverFLowの回答を参考にしました)
ruby
1# Controller 2class XxxController < ApplicationController 3 def by_index 4 index = params[:index] 5 # pictureテーブルのpictureカラムにbase64エンコードした画像が入っている 6 picture = Picture.find_by(index: index).picture 7 8 send_data ::Base64.decode64(picture), 9 filename: "#{index}.png", 10 type: 'image/png', 11 disposition: 'inline' 12 end 13end 14 15# router.rb 16Rails.application.routes.draw do 17 get 'xxx/picture/:index', to: 'xxx#by_index' 18end
この状態で、localhost:xxxx/xxx/picture/0等にアクセスすると、特にエラーは発生しないのですが、画像ではなく参照切れのアイコンが表示されてしまいます。
httpステータスも200で、railsのログもエラーは出ていません。
ブラウザで直接表示しても、画像は表示されませんでした。
試しに、imgタグのsrcに直接DBのbase64を入れてみたところ正常に表示されたので、データの不備ではなさそうです。
心当たりある方、ご教授よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/11 11:58
2017/04/11 12:23