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

質問編集履歴

2

表示するHTMLとディレクトリ構造を追加しました。

2021/08/23 11:36

投稿

Testament
Testament

スコア1

title CHANGED
File without changes
body CHANGED
@@ -3,6 +3,18 @@
3
3
  Go言語で画像をアップロードして表示しようとしていましたが、表示の仕方が分かりません。
4
4
  一度アップロードした写真はダウンロードされてそれを表示しようかと考えております。
5
5
 
6
+ └─
7
+ ├─cmd
8
+ │ └─main.go
9
+ ├─internal
10
+ │ └─http
11
+ │ └─api.go
12
+ │ └─server.go
13
+ ├─templates
14
+ │ └─index.html
15
+ │ └─show.html
16
+ └─img
17
+
6
18
  ### 該当のソースコード
7
19
 
8
20
  ```go
@@ -61,6 +73,23 @@
61
73
  </html>
62
74
  ```
63
75
 
76
+ 表示するHTMLを追加しました。
77
+ ```html
78
+ <!DOCTYPE html>
79
+ <html>
80
+
81
+ <head>
82
+ <meta charset="utf-8">
83
+ <title>画像をある分だけ表示する</title>
84
+ </head>
85
+
86
+ <body>
87
+ <img src="/img/sample.png">
88
+ </body>
89
+
90
+ </html>
91
+ ```
92
+
64
93
  uploadのコードは以下です。
65
94
  ```Go
66
95
  func upload(c echo.Context) error {

1

uploadメソッド部分の追加をいたしました。

2021/08/23 11:36

投稿

Testament
Testament

スコア1

title CHANGED
File without changes
body CHANGED
@@ -61,7 +61,50 @@
61
61
  </html>
62
62
  ```
63
63
 
64
+ uploadのコードは以下です。
65
+ ```Go
66
+ func upload(c echo.Context) error {
67
+ // Read form fields
68
+ name := c.FormValue("name")
69
+ discription := c.FormValue("discription")
64
70
 
71
+ //------------
72
+ // Read files
73
+ //------------
74
+
75
+ // Multipart form
76
+ form, err := c.MultipartForm()
77
+ if err != nil {
78
+ return err
79
+ }
80
+ files := form.File["files"]
81
+
82
+ for _, file := range files {
83
+ // Source
84
+ src, err := file.Open()
85
+ if err != nil {
86
+ return err
87
+ }
88
+ defer src.Close()
89
+
90
+ // Destination
91
+ dst, err := os.Create("img/" + file.Filename)
92
+ if err != nil {
93
+ return err
94
+ }
95
+ defer dst.Close()
96
+
97
+ // Copy
98
+ if _, err = io.Copy(dst, src); err != nil {
99
+ return err
100
+ }
101
+ }
102
+
103
+ return c.HTML(http.StatusOK, fmt.Sprintf("<p>Uploaded successfully %d files with fields name=%s and discription=%s.</p>", len(files), name, discription))
104
+ }
105
+ ```
106
+
107
+
65
108
  ### 補足情報(FW/ツールのバージョンなど)
66
109
 
67
110
  Windows10,VScode,Chrome