質問編集履歴
2
コードの変更
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
|
14
|
+
<html>
|
14
|
-
<head>
|
15
|
+
<head>
|
15
|
-
|
16
|
+
<meta charset="utf-8">
|
16
|
-
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
17
|
-
|
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
|
-
<
|
27
|
+
<script>
|
28
|
+
|
24
|
-
|
29
|
+
document.getElementById('upload').addEventListener('click', function() {
|
30
|
+
files = document.getElementById('file').files;
|
31
|
+
image = files[0];
|
25
32
|
|
26
|
-
<script>
|
27
|
-
|
33
|
+
if(files[0].type.indexOf('image') >= 0) {
|
28
|
-
|
34
|
+
ref = firebase.storage().ref().child(image.name);
|
29
|
-
apiKey: "",
|
30
|
-
authDomain: "",
|
31
|
-
databaseURL: "",
|
32
|
-
projectId: "",
|
33
|
-
storageBucket: "",
|
34
|
-
|
35
|
+
ref.put(image).then(function(snapshot) {
|
36
|
+
ref.getDownloadURL().then(function(url){
|
35
|
-
|
37
|
+
alert('画像をアップロードしました!');
|
38
|
+
document.getElementById('image').src = url;
|
36
|
-
|
39
|
+
});
|
40
|
+
});
|
37
|
-
|
41
|
+
} else {
|
38
|
-
|
42
|
+
alert('アップロードできるのはjpeg、png、gifの画像だけです');
|
43
|
+
}
|
39
|
-
|
44
|
+
});
|
40
45
|
|
41
|
-
|
46
|
+
document.getElementById('delete').addEventListener('click', function() {
|
42
|
-
|
43
|
-
|
47
|
+
ref.delete().then(function(){
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
<body>
|
48
|
-
|
48
|
+
alert('画像を削除しました!');
|
49
|
-
<div>
|
50
|
-
<div>
|
51
|
-
名前<br><input type="text" id="name">
|
52
|
-
</div>
|
53
|
-
|
49
|
+
});
|
54
|
-
|
50
|
+
});
|
55
|
-
|
51
|
+
|
56
|
-
画像<form method="post" enctype="multipart/form-data">
|
57
|
-
<input type="file" id="example"name="avatar">
|
58
|
-
|
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
修正
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();
|