teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

対処法追加

2019/04/27 18:06

投稿

siruku6
siruku6

スコア1382

answer CHANGED
@@ -12,8 +12,26 @@
12
12
  どうしても直接アクセスを禁止したいのであれば、
13
13
  `src="/xxxx/yyyy.png"`
14
14
  を使わずに画像を表示する方法を探して適用することになりそうです。
15
- 経験がないため、そんな方法があるのかどうかはわかりません。
15
+ ~~経験がないため、そんな方法があるのかどうかはわかりません。~~
16
16
 
17
- もしかしたら、controller側でpublic配下の画像を変数に代入し、ビューに渡すことで表示できる方法があるかもしれませんが、可能性は低そうです...。
17
+ ---
18
18
 
19
+ そういえば昔ちょっと変わった方法で画像を表示させたことがありました。
20
+
21
+ `src=/controller名/action名/パラメータたち`
22
+ でも
23
+ `image_tag image_path` <= アクションのpathを指定
24
+ でもいいのですが、
25
+
26
+ ```ruby
27
+ # controller
28
+ def アクション名
29
+ # ここでどうにかして直接アクセスを禁止....できるかな
30
+ png_path = パラメータを使ってファイルパスを取得
31
+ send_data(File.read(png_path), disposition: 'inline')
32
+ end
33
+ ```
34
+ こんな風にしても画像は表示出来た気がします。
35
+ ブラウザごとの検証が大変だとは思います。
36
+
19
37
  iwamotさんが挙げられているようなwebサーバー側での対処は経験がないため回答ができず申し訳ありません。

1

補足追加

2019/04/27 18:05

投稿

siruku6
siruku6

スコア1382

answer CHANGED
@@ -14,4 +14,6 @@
14
14
  を使わずに画像を表示する方法を探して適用することになりそうです。
15
15
  経験がないため、そんな方法があるのかどうかはわかりません。
16
16
 
17
- もしかしたら、controller側でpublic配下の画像を変数に代入し、ビューに渡すことで表示できる方法があるかもしれませんが、可能性は低そうです...。
17
+ もしかしたら、controller側でpublic配下の画像を変数に代入し、ビューに渡すことで表示できる方法があるかもしれませんが、可能性は低そうです...。
18
+
19
+ iwamotさんが挙げられているようなwebサーバー側での対処は経験がないため回答ができず申し訳ありません。