diff --git a/render/templates/forms/Article.tmpl b/render/templates/forms/Article.tmpl
index 3b5e9ce..b86ffeb 100644
--- a/render/templates/forms/Article.tmpl
+++ b/render/templates/forms/Article.tmpl
@@ -2,4 +2,68 @@
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/web/app.go b/web/app.go
index bdf4810..82e1da4 100644
--- a/web/app.go
+++ b/web/app.go
@@ -69,6 +69,9 @@ func NewWebApp(
admin.Post("/binaries/delete", binaryManageHandler.HandleDelete)
admin.Post("/interactions/:id/delete/", adminInteractionHandler.HandleDelete)
+ adminApi := admin.Group("/api")
+ adminApi.Post("/binaries", binaryManageHandler.HandleUploadApi)
+
// Editor
editor := app.Group("/editor")
editor.Use(middleware.NewAuthMiddleware(authorService).Handle)
diff --git a/web/binary_manager_handler.go b/web/binary_manager_handler.go
index b84484a..3230a87 100644
--- a/web/binary_manager_handler.go
+++ b/web/binary_manager_handler.go
@@ -3,6 +3,7 @@ package web
import (
"owl-blogs/app"
"owl-blogs/app/repository"
+ "owl-blogs/domain/model"
"owl-blogs/render"
"sort"
"strings"
@@ -46,31 +47,48 @@ func (h *BinaryManageHandler) Handle(c *fiber.Ctx) error {
}
-func (h *BinaryManageHandler) HandleUpload(c *fiber.Ctx) error {
+func (h *BinaryManageHandler) saveFileUpload(c *fiber.Ctx) (*model.BinaryFile, error) {
file, err := c.FormFile("file")
if err != nil {
- return err
+ return nil, err
}
reader, err := file.Open()
if err != nil {
- return err
+ return nil, err
}
defer reader.Close()
content := make([]byte, file.Size)
_, err = reader.Read(content)
if err != nil {
- return err
+ return nil, err
}
binary, err := h.service.Create(file.Filename, content)
+ if err != nil {
+ return nil, err
+ }
+ return binary, nil
+}
+
+func (h *BinaryManageHandler) HandleUpload(c *fiber.Ctx) error {
+ binary, err := h.saveFileUpload(c)
if err != nil {
return err
}
-
return c.Redirect("/media/" + binary.Id)
}
+func (h *BinaryManageHandler) HandleUploadApi(c *fiber.Ctx) error {
+ binary, err := h.saveFileUpload(c)
+ if err != nil {
+ return err
+ }
+ return c.JSON(map[string]string{
+ "location": "/media/" + binary.Id,
+ })
+}
+
func (h *BinaryManageHandler) HandleDelete(c *fiber.Ctx) error {
id := c.FormValue("file")
binary, err := h.service.FindById(id)