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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1053閲覧

React × firebaseで画像をStorageに保存しdownloadUrlを取得したい

Sutasyu127

総合スコア11

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/07/07 09:32

編集2020/07/07 09:50

前提・実現したいこと

firebaseを用いたアプリケーションで画像をStorageに保存した後、
そのdownloadUrlを取得したいです。
https://firebase.google.com/docs/storage/web/upload-files?hl=ja
↑の「アップロードの進捗状況をモニタリングする」を参照しています。

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

関数の返り値としてdownloadUrlが取得できず、Promiseが帰ってくる。

該当のソースコード

TypeScript

1export const saveImages = async ( 2 name: string, 3 file: any, 4) => { 5 let storage = firebase.storage() 6 let imageUrl; 7 const storageRef = storage.ref() 8 const uploadTask = storageRef.child(`images/${name}`).put(file) 9 uploadTask.on( 10 'state_changed', 11 (snapshot) => { 12 console.log('snapshot', snapshot) 13 }, 14 (error) => { 15 console.log('err', error) 16 }, 17 () => { 18 uploadTask.snapshot.ref.getDownloadURL().then(function(downloadURL) { 19 imageUrl = downloadURL; 20 }) 21 } 22 ) 23 return imageUrl; 24 // ↑のreturnでURLを返すようにしたいイメージです。 25};

TypeScript

1// 戻り先 2let downloadUrl = saveImages(fileName, file); 3console.log(downloadUrl); // https://image_url....

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

以下のようにして解決しました。

TypeScript

1export const saveImages = async ( 2 name: string, 3 file: any, 4) => { 5 let storage = firebase.storage() 6 let imageUrl; 7 const storageRef = storage.ref() 8 const uploadTask = storageRef.child(`images/${name}`).put(file) 9 return uploadTask; 10};

TypeScript

1const saveItems = async () => { 2 let url = ''; 3 const savedImage = await saveReportImages(imageFileName, imageFile) 4 await savedImage.task.snapshot.ref.getDownloadURL().then(function(downloadURL) { 5 url = downloadURL 6 }) 7}

投稿2020/07/08 03:04

Sutasyu127

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問