質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

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

Nuxt.js

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

162閲覧

APIで取得した画像データをNuxtで表示できない

rickey0718

総合スコア3

Vue.js

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

Nuxt.js

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2024/03/18 00:16

編集2024/03/18 00:25

実現したいこと

API(Express)経由でサーバ上の画像ファイルの内容を取得して、Nuxtで表示したい。

前提

Nuxtで作成している画面で、画像ファイルを表示させようとしています。
ファイルパスを指定してAPIを呼び出し、当該パスにある画像ファイルのデータを返す仕組みとしています。
Vue.jsやNuxtを触り始めて1ヶ月ほどで分からぬことも多く試行錯誤ばかりなのですが、よろしくおねがいします。

しかし、以下のような問題が発生しています。

発生している問題・エラーメッセージ

ブラウザ上に何も表示されない。
しかし、開発環境でVueファイルを更新したタイミングで取得していた画像が表示されます。
リロードすると再び表示されない状態になってしまうのですが。
レスポンスの中身を見てみると、APIからは指定したデータが返ってきているように見えます。

該当のソースコード

<img :src="item.imageContent" :key="item.imageContent" alt="取得した画像"> ・・・ data() { return { imageContent: null, ・・・ async mounted() { const imagePath = this.item.image_path; const imageResponse = await this.$axios.get(`/api/imagecontent?path=${encodeURIComponent(imagePath)}`, { responseType: 'blob' }); const imageContent = URL.createObjectURL(imageResponse.data); // 画像ファイルのデータは返ってきているように見えている this.item.imageContent = imageContent;

###試したこと・調べたこと
ネット上で検索(海外サイトはほぼ探せていません)
開発ツールでAPIとの連携状況の確認

補足情報(FW/ツールのバージョンなど)

"nuxt": "^2.15.8", "vue": "^2.7.10", "express": "^4.18.3", "@nuxtjs/axios": "^5.13.6",

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

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

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

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

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

m.ts10806

2024/03/18 01:00

ご提示の内容からは読み取れなかったのですが「画像ファイルのデータ」とは具体的に何が返ってきているのでしょう? コンソール出力したキャプチャなど追記願います。
guest

回答1

0

自己解決

Vue.setで解決しました。
仕組み上、こうしないといけなかったものなのか、付け焼き刃的な対応なのかが分かっていないのですが。

const imageURL = URL.createObjectURL(imageResponse.data); this.$set(item, 'imageContent', imageURL);

投稿2024/03/18 05:10

rickey0718

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問