123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- package back
- import (
- "os"
- "github.com/gin-gonic/gin"
- )
- func prepareRouterDocument() {
- router.POST("/document-insert", handlerDocumentInsert)
- }
- func handlerDocumentInsert(c *gin.Context) {
- man := getManagerFromContext(c)
- if man == nil {
- c.JSON(200, gin.H{
- "Error": "Отказано в доступе",
- })
- return
- }
- if man.Role != "__admin" {
- c.JSON(200, gin.H{
- "Error": "Отказано в доступе",
- })
- return
- }
- form, e := c.MultipartForm()
- if e != nil {
- logger.Println(e)
- c.JSON(200, gin.H{
- "Error": "Невозможно обработать данные",
- })
- return
- }
- var caption, extension string
- if len(form.Value["Caption"]) == 1 {
- caption = form.Value["Caption"][0]
- }
- if len(form.Value["Extension"]) == 1 {
- extension = form.Value["Extension"][0]
- }
- if len(form.File["File"]) != 1 {
- logger.Println("Количество файлов для загрузки " + string(len(form.File["File"])))
- c.JSON(200, gin.H{
- "Error": "Невозможно загрузить файл",
- })
- return
- }
- hash, e := GenerateHash(caption)
- if e != nil {
- logger.Println(e)
- c.JSON(200, gin.H{
- "Error": "Невозможно создать имя файла",
- })
- return
- }
- _, e = os.Stat(Setting.Docs)
- if os.IsNotExist(e) {
- e = os.MkdirAll(Setting.Docs, 0777)
- if e != nil {
- logger.Println(e)
- c.JSON(200, gin.H{
- "Error": "Невозможно создать каталог для зранения файлов",
- })
- return
- }
- }
- file := form.File["File"][0]
- filename := hash + "." + extension
- e = c.SaveUploadedFile(file, Setting.Docs+filename)
- if e != nil {
- logger.Println(e)
- c.JSON(200, gin.H{
- "Error": "Неудалось сохранить файл на диске сервера",
- })
- return
- }
- doc := document{}
- doc.Caption = caption
- doc.Extension = extension
- doc.Link = hash
- doc.Manager = man.ID
- e = doc.Insert()
- if e != nil {
- logger.Println(e)
- c.JSON(200, gin.H{
- "Error": "Неудалось добваить документ в базу данных",
- })
- e = os.RemoveAll(Setting.Docs + filename)
- if e != nil {
- logger.Println("ERROR: ", e)
- }
- return
- }
- c.JSON(200, gin.H{
- "Error": nil,
- "ID": doc.ID,
- })
- }
|