質問編集履歴

1

更新致しました。プログラミング初心者で不手際が多いですが、ご了承ください。宜しくお願いいたします。

2021/11/21 03:49

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,52 +1,234 @@
1
+ uping.php
2
+
1
- ```
3
+ ```
4
+
5
+
6
+
2
-
7
+ <HTML>
8
+
3
-
9
+ <HEAD>
10
+
4
-
11
+ <META http-equiv="Content-Type" content="text/html; charset=utf-8">
12
+
13
+ <TITLE>データベースへの画像の格納</TITLE>
14
+
15
+ </META>
16
+
17
+ </HEAD>
18
+
19
+ <P>ファイルのアップロード</P>
20
+
21
+ <BODY>
22
+
23
+ <FORM method="POST" enctype="multipart/form-data" action="uping.php">
24
+
25
+ <INPUT type="hidden" name="MAX_FILE_SIZE" value="1080000">
26
+
27
+ 画像のファイル名を入力してください(最大64KByte)<BR>
28
+
29
+ ファイル名:<INPUT type="text" name="file_name"><BR>
30
+
31
+ パス:<INPUT size="30" type="file" name="upfile"><BR>
32
+
33
+ <BR>
34
+
35
+ <INPUT type="submit" name="submit" value="送信">
36
+
37
+ <INPUT type="reset" name="reset" value="リセット">
38
+
39
+ </INPUT></INPUT></BR></BR></INPUT></BR></INPUT></BR></INPUT>
40
+
41
+ </FORM>
42
+
43
+
44
+
45
+ <?php
46
+
47
+ if(isset($_POST["submit"])){
48
+
49
+ try{
50
+
51
+ $dsn = 'mysql:dbname=;host=';
52
+
53
+ $user = '';
54
+
55
+ $password = '';
56
+
57
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
58
+
59
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
60
+
61
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
62
+
63
+ print "<hr>";
64
+
65
+
66
+
67
+ $file_name = $_POST["file_name"];
68
+
69
+ $imgdat = file_get_contents($_FILES["upfile"]["tmp_name"]);
70
+
71
+
72
+
73
+ $sql = "INSERT INTO picture (name,data,type) values (?,?,?)";
74
+
75
+ $stmt = $dbh->prepare($sql);
76
+
77
+ $data[] = $file_name;
78
+
79
+ $data[] = $imgdat;
80
+
81
+ $data[] = mime_content_type($_FILES["upfile"]["tmp_name"]);
82
+
83
+ $stmt->execute($data);
84
+
85
+ $dbh = null; //データベースから切断
86
+
5
-
87
+ }
88
+
89
+ catch(PDOException $e){
90
+
91
+ print 'サーバが停止しておりますので暫くお待ちください。';
92
+
93
+ exit();
94
+
95
+ }
96
+
97
+ }
98
+
99
+
100
+
101
+
102
+
103
+ ?>
104
+
105
+ </BODY>
106
+
107
+ </HTML>
108
+
109
+ ```
110
+
111
+ display.php
112
+
113
+ ```
6
114
 
7
115
  <?php
8
116
 
9
- //画像
117
+ try{
10
-
11
- $dbname='*****';
118
+
12
-
13
- $dsn = 'mysql:dbname='.$dbname.';host=****;charset=utf8mb4';
119
+ $dsn = 'mysql:dbname=;host=';
14
-
120
+
15
- $user = '****';
121
+ $user = '';
16
-
122
+
17
- $password = '****';
123
+ $password = '';
18
-
124
+
19
- $dbh = new PDO($dsn, $user, $password);
125
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
126
+
20
-
127
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
128
+
21
-
129
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
22
-
23
-
24
-
130
+
131
+
132
+
25
- $sql_select = "SELECT ext,img FROM images WHERE id = ?";
133
+ $sql = "SELECT * FROM picture";
26
-
134
+
27
- $result1=$dbh->prepare($sql_select);
135
+ $stmt_pic = $dbh->prepare ( $sql );
28
-
29
- //パラメータをセット
136
+
30
-
31
- $id=1;
32
-
33
- $result1->bindparam(1,$id,PDO::PARAM_INT);
34
-
35
- $result1->execute();
137
+ $stmt_pic->execute ();
36
-
138
+
37
- $row = $result1 -> fetch(PDO::FETCH_ASSOC);
139
+ $row = $stmt_pic->fetchAll ( PDO::FETCH_BOTH );
38
-
140
+
39
- //取得した画像バイナリデータをbase64で変換。
141
+ $dbh = null; //データベースから切断
142
+
40
-
143
+ }
144
+
145
+ catch(PDOException $e){
146
+
147
+ die($e->getMessage());
148
+
41
- $img = base64_encode($row['img']);
149
+ print 'サーバが停止しておりますので暫くお待ちください。';
150
+
42
-
151
+ exit();
152
+
43
-
153
+ }
154
+
155
+ foreach($row as $data){
156
+
157
+ echo '<img src="image.php?id='.$data["id"].'"><br>'.PHP_EOL;
158
+
159
+ }
44
160
 
45
161
  ?>
46
162
 
47
-
163
+ ```
164
+
48
-
165
+ image.php
166
+
167
+ ```
168
+
169
+ <?php
170
+
171
+ $sql = "SELECT * FROM img where id=?";
172
+
173
+ $stmt_pic = $dbh->prepare ( $sql );
174
+
175
+ $stmt_pic->execute ([$_GET["id"]]);
176
+
177
+ $row = $stmt_pic->fetch(PDO::FETCH_ASSOC);
178
+
179
+ // header("Content-Type: ".$row["type"]);
180
+
181
+ // print $row["image"];
182
+
183
+
184
+
185
+
186
+
187
+ try{
188
+
189
+ $dsn = 'mysql:dbname=;host=';
190
+
191
+ $user = '';
192
+
193
+ $password = '';
194
+
195
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
196
+
197
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
198
+
49
- <img src="data:<?php echo $row['ext'] ?>;base64,<?php echo $img; ?>
199
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
200
+
201
+
202
+
203
+ $sql = "SELECT * FROM picture where id=?";
204
+
205
+ $stmt_pic = $dbh->prepare ( $sql );
206
+
207
+ $stmt_pic->execute ([$_GET["id"]]);
208
+
209
+ $row = $stmt_pic->fetch(PDO::FETCH_ASSOC);
210
+
211
+ $dbh = null; //データベースから切断
212
+
213
+ }
214
+
215
+ catch(PDOException $e){
216
+
217
+ die($e->getMessage());
218
+
219
+ print 'サーバが停止しておりますので暫くお待ちください。';
220
+
221
+ exit();
222
+
223
+ }
224
+
225
+
226
+
227
+ header("Content-Type: ".$row["type"]);
228
+
229
+ print $row["data"];
230
+
231
+ ?>
50
232
 
51
233
  ```
52
234