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

質問編集履歴

2

コードの変更

2020/05/15 08:29

投稿

predesu
predesu

スコア1

title CHANGED
File without changes
body CHANGED
@@ -4,112 +4,51 @@
4
4
 
5
5
  ###実現できていること
6
6
  名前、コメントの欄で記入した内容の登録がチャット形式でできています。
7
+ 画像もfirebase storageにUPできるのは確認できています。
7
8
 
8
9
  ###解決したい内容
9
- 画像投稿の機能でアップロドは出来るものの、画像場に投稿する方法がわかりません
10
+ 画像投稿をゴルとしていため、storageへのUPされているものをwebサイト上への投稿としたいです。
10
11
 
11
- ###コード(HTML)
12
+ ###画像がfirebase storageにUPされるコード(HTML)
12
13
  <!DOCTYPE html>
13
- <html lang="en">
14
+ <html>
14
- <head>
15
+ <head>
15
- <meta charset="UTF-8">
16
+ <meta charset="utf-8">
16
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
17
+ <meta name="viewport" content="width=device-width, initial-scale=1">
17
- <title>Chat App</title>
18
+ <title>Realtime Database</title>
19
+ <script defer src="/__/firebase/4.6.1/firebase-app.js"></script>
20
+ <script defer src="/__/firebase/4.6.1/firebase-storage.js"></script>
21
+ <script defer src="/__/firebase/init.js"></script>
22
+ </head>
23
+ <body>
24
+ <input type="file" id="file" />
25
+ <button id="upload" type="button">アップロード</button>
18
26
 
19
- <!-- The core Firebase JS SDK is always required and must be listed first -->
20
- <script src="https://www.gstatic.com/firebasejs/7.14.3/firebase-app.js"></script>
21
- <script src="https://www.gstatic.com/firebasejs/7.14.3/firebase-auth.js"></script>
22
- <script src="https://www.gstatic.com/firebasejs/7.14.3/firebase-database.js"></script>
23
- <!-- TODO: Add SDKs for Firebase products that you want to use
27
+ <script>
28
+
24
- https://firebase.google.com/docs/web/setup#available-libraries -->
29
+ document.getElementById('upload').addEventListener('click', function() {
30
+ files = document.getElementById('file').files;
31
+ image = files[0];
25
32
 
26
- <script>
27
- // Your web app's Firebase configuration
33
+ if(files[0].type.indexOf('image') >= 0) {
28
- var firebaseConfig = {
34
+ ref = firebase.storage().ref().child(image.name);
29
- apiKey: "",
30
- authDomain: "",
31
- databaseURL: "",
32
- projectId: "",
33
- storageBucket: "",
34
- messagingSenderId: "",
35
+ ref.put(image).then(function(snapshot) {
36
+ ref.getDownloadURL().then(function(url){
35
- appId: ""
37
+ alert('画像をアップロードしました!');
38
+ document.getElementById('image').src = url;
36
- };
39
+ });
40
+ });
37
- // Initialize Firebase
41
+ } else {
38
- firebase.initializeApp(firebaseConfig);
42
+ alert('アップロードできるのはjpeg、png、gifの画像だけです');
43
+ }
39
- </script>
44
+ });
40
45
 
41
- <link rel="stylesheet" href="style.css">
46
+ document.getElementById('delete').addEventListener('click', function() {
42
-
43
- </head>
47
+ ref.delete().then(function(){
44
-
45
-
46
-
47
- <body>
48
- <h1>チャット</h1>
48
+ alert('画像を削除しました!');
49
- <div>
50
- <div>
51
- 名前<br><input type="text" id="name">
52
- </div>
53
- <br>
49
+ });
54
- <div>
50
+ });
55
- コメント<br><textarea id="message" row="10"></textarea><br>
51
+
56
- 画像<form method="post" enctype="multipart/form-data">
57
- <input type="file" id="example"name="avatar">
58
- </form>
52
+ </script>
59
- <button id="send">送る</button>
60
- </div>
61
-
62
- <hr>
63
- <div id="output"></div>
64
- </div>
65
-
66
-
67
- <script src="index.js"></script>
68
-
69
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
70
-
71
- </body>
53
+ </body>
72
- </html>
54
+ </html>
73
-
74
- ###コード(Javascript)
75
- var database = firebase.database();
76
- let room = "chat_room";
77
- const send = document.getElementById("send");
78
- const name = document.getElementById("name");
79
- const message = document.getElementById("message");
80
- const output = document.getElementById("output")
81
-
82
-
83
- //送信処理
84
- send.addEventListener('click', function() {
85
- var now = new Date();
86
- database.ref(room).push({
87
- name: name.value,
88
- message: message.value,
89
- date: now.getFullYear() + '年' + now.getMonth()+ '月' + now.getDate() + '日' + now.getHours() + '時' + now.getMinutes() + '分'
90
- });
91
- message.value="";
92
- name.value="";
93
- });
94
-
95
-
96
- //受信処理
97
- database.ref(room).on("child_added", function(data) {
98
- const v = data.val();
99
- const k = data.key;
100
- let str = "";
101
- str += '<div class="name">名前:'+v.name+'</div>';
102
- str += '<div class="text">日時:'+v.date+'</div>';
103
- str += '<div class="text">メッセージ:'+v.message+'</div><hr>';
104
- output.innerHTML += str;
105
- });
106
-
107
- //画像
108
- // ファイルデータ
109
- const file = document.getElementById("example").files[0];
110
- // フォームデータを作成
111
- const formData = new FormData();
112
- // avatarというフィールド名でファイルを追加
113
- formData.append("avatar", file);
114
- // アップロード
115
- fetch(送信先のURL, { method: "POST", body: formData });

1

修正

2020/05/15 08:29

投稿

predesu
predesu

スコア1

title CHANGED
File without changes
body CHANGED
@@ -93,7 +93,6 @@
93
93
  });
94
94
 
95
95
 
96
-
97
96
  //受信処理
98
97
  database.ref(room).on("child_added", function(data) {
99
98
  const v = data.val();