質問編集履歴
2
表示するHTMLとディレクトリ構造を追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,6 +8,30 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
+
└─
|
12
|
+
|
13
|
+
├─cmd
|
14
|
+
|
15
|
+
│ └─main.go
|
16
|
+
|
17
|
+
├─internal
|
18
|
+
|
19
|
+
│ └─http
|
20
|
+
|
21
|
+
│ └─api.go
|
22
|
+
|
23
|
+
│ └─server.go
|
24
|
+
|
25
|
+
├─templates
|
26
|
+
|
27
|
+
│ └─index.html
|
28
|
+
|
29
|
+
│ └─show.html
|
30
|
+
|
31
|
+
└─img
|
32
|
+
|
33
|
+
|
34
|
+
|
11
35
|
### 該当のソースコード
|
12
36
|
|
13
37
|
|
@@ -124,6 +148,40 @@
|
|
124
148
|
|
125
149
|
|
126
150
|
|
151
|
+
表示するHTMLを追加しました。
|
152
|
+
|
153
|
+
```html
|
154
|
+
|
155
|
+
<!DOCTYPE html>
|
156
|
+
|
157
|
+
<html>
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
<head>
|
162
|
+
|
163
|
+
<meta charset="utf-8">
|
164
|
+
|
165
|
+
<title>画像をある分だけ表示する</title>
|
166
|
+
|
167
|
+
</head>
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
<body>
|
172
|
+
|
173
|
+
<img src="/img/sample.png">
|
174
|
+
|
175
|
+
</body>
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
</html>
|
180
|
+
|
181
|
+
```
|
182
|
+
|
183
|
+
|
184
|
+
|
127
185
|
uploadのコードは以下です。
|
128
186
|
|
129
187
|
```Go
|
1
uploadメソッド部分の追加をいたしました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -124,6 +124,92 @@
|
|
124
124
|
|
125
125
|
|
126
126
|
|
127
|
+
uploadのコードは以下です。
|
128
|
+
|
129
|
+
```Go
|
130
|
+
|
131
|
+
func upload(c echo.Context) error {
|
132
|
+
|
133
|
+
// Read form fields
|
134
|
+
|
135
|
+
name := c.FormValue("name")
|
136
|
+
|
137
|
+
discription := c.FormValue("discription")
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
//------------
|
142
|
+
|
143
|
+
// Read files
|
144
|
+
|
145
|
+
//------------
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
// Multipart form
|
150
|
+
|
151
|
+
form, err := c.MultipartForm()
|
152
|
+
|
153
|
+
if err != nil {
|
154
|
+
|
155
|
+
return err
|
156
|
+
|
157
|
+
}
|
158
|
+
|
159
|
+
files := form.File["files"]
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
for _, file := range files {
|
164
|
+
|
165
|
+
// Source
|
166
|
+
|
167
|
+
src, err := file.Open()
|
168
|
+
|
169
|
+
if err != nil {
|
170
|
+
|
171
|
+
return err
|
172
|
+
|
173
|
+
}
|
174
|
+
|
175
|
+
defer src.Close()
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
// Destination
|
180
|
+
|
181
|
+
dst, err := os.Create("img/" + file.Filename)
|
182
|
+
|
183
|
+
if err != nil {
|
184
|
+
|
185
|
+
return err
|
186
|
+
|
187
|
+
}
|
188
|
+
|
189
|
+
defer dst.Close()
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
// Copy
|
194
|
+
|
195
|
+
if _, err = io.Copy(dst, src); err != nil {
|
196
|
+
|
197
|
+
return err
|
198
|
+
|
199
|
+
}
|
200
|
+
|
201
|
+
}
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
return c.HTML(http.StatusOK, fmt.Sprintf("<p>Uploaded successfully %d files with fields name=%s and discription=%s.</p>", len(files), name, discription))
|
206
|
+
|
207
|
+
}
|
208
|
+
|
209
|
+
```
|
210
|
+
|
211
|
+
|
212
|
+
|
127
213
|
|
128
214
|
|
129
215
|
### 補足情報(FW/ツールのバージョンなど)
|