🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1255閲覧

Nuxt.jsにて、Firebase Cloud Storageから取得した画像を表示できない。

TsksHsgw

総合スコア23

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/12/31 14:09

はじめに

質問をご覧いただき、ありがとうございます。

普段、モバイルエンジニアをしている、Web開発の初学者です。

Nuxt.jsについて質問させて下さい。

実現したいこと

  • Firebase Cloud Storageに保存した画像を表示したい

解決したい内容

  • Firebase Cloud Storageの画像のURLをFirestoreに保存しています
  • Nuxt.jsのscriptタグの中でFirestoreの画像URLが格納されているドキュメントを取得しています
  • ドキュメントから取得した画像URLをthis.imageUrlに代入します
  • <img :src="this.imageUrl">imgタグとデータをバインディングして表示しようとしています

上記の手順で画像を表示できるものと思っていたのですが、実際には、以下のような表示になってしまい、
正常に画像が表示されません。
(画像のURLを固定で指定すると正常に表示されるので、画像のURLは正しくDLできております!)

イメージ説明

ネットの記事を色々と漁ってはみたのですが、
画像ファイルのアップロードについての情報は色々と見つかるのですが、
画像ファイルのダウンロードについてまとめてある情報を見つけることができず、
原因がわからず困っております。

ソースコード

【index.vue】 <template> <div class="page"> <h1>Data from Firebase!</h1> <table class="Table"> <thead> <tr> <th>ID</th> <th>画像のURL</th> <th>アップロード日時</th> <th></th> </tr> </thead> <tbody> <tr v-for="(item, index) in dbData" :key="index"> <td>{{ item.id }}</td> <td>{{ item.imagePath }}</td> <td>{{ item.uploadDate }}</td> <td><a v-bind:href="item.sampleUrl">to sample</a></td> </tr> </tbody> </table> </div> </template> <script> import firebase from '@/plugins/firebase' export default { data() { return { dbData: [], } }, created() { console.log("index - created called!") let dbData = [] this.dbData = dbData firebase.firestore().collection('Unchecked').get().then(snapshot => { //...(略)...ここで Firestore から取得したデータをdbDataに格納してます! // sampleUrlはid, imagePath, uploadDateをqueryとして、detail.vueに遷移するためのhrefのURLです this.dbData.push({id: gotdata.id, imagePath: gotdata.imagePath, uploadDate: gotdata.uploadDate, sampleUrl: sampleUrl}); }); }, } </script>
【detail.vue】 <template> <section class="container"> <h1>Here is Detail page</h1> <h3>ID: {{ id }}</h3> <h3>User ID: {{ userId }}</h3> <h3>Image: {{ imagePath }}</h3> <h3>Point: {{ point }}</h3> <h3>Upload Date: {{ uploadDate }}</h3> <div> <nuxt-link to="/">Back to TopPage!</nuxt-link> </div> <div> <button type="button" @click="hoge"> getData </button> </div> <div> <img v-bind:src="imagePath"> </div> </section> </template> <script> export default { data() { console.log("sample - data() called!") return { id: this.$route.query.id, imagePath: this.$route.query.imagePath, // ← ここでqueryパラメータのimagePathを代入 uploadDate: this.$route.query.uploadDate, } }, </script> <style> img { width: 600px; height: 600px; object-fit: content; transform: rotate(-270deg); } </style>

解決方法など、ご存知の方いらっしゃいましたら、
ご教示いただけますと幸いです。

何卒、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

画像のURLをqueryパラメータに追加して、detail.vueで受け取った時に、もともと「%2F」だった箇所が自動的に「/」に変換されている箇所があったことが原因で画像が正常に表示されなかった様です。

queryパラメータで受け取ったデータのうち、「%2F → /」に変換されてしまったところを「/ → %2F」に変換することで正常に表示されました!

質問をご覧頂いて、解決策を考えて下さっていた方がいらっしゃいましたら、
お騒がせしてしまい、すみませんでした。
ありがとうございました。

自己解決と致します。

投稿2021/01/08 17:50

TsksHsgw

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問