2017-07-15 101 views
0

我想保存由JSON发布的图像文件。如何从JSON中发布文件在杜松子酒中?

下面是文章的结构:

type Article struct { 
    Title string `json:"title"` 
    Body string `json:"body"` 
    File []byte `json:"file"` 
} 

而且处理程序是:

func PostHandler(c *gin.Context) { 
     var err error 
     var json Article 
     err = c.BindJSON(&json) 
     if err != nil { 
      log.Panic(err) 
     } 

    //handle photo upload 
     var filename string 
     file, header, err := json.File //assignment count mismatch: 3 = 1 

     if err != nil { 
      fmt.Println(err) 
      filename = "" 

     } else { 
      data, err := ioutil.ReadAll(file) 
      if err != nil { 
       fmt.Println(err) 
       return 
      } 

      filename = path.Join("media", +shared.RandString(5)+path.Ext(header.Filename)) 

      err = ioutil.WriteFile(filename, data, 0777) 
      if err != nil { 
       io.WriteString(w, err.Error()) 
       return 
      } 

     } 
... 

,但我得到

分配数量不匹配:3 = 1

我复制它工作得很好的文件从工作多形式的处理程序处理的一部分,但很显然,

file, header, err := r.FormFile("uploadfile") 

不能被翻译成JSON处理。

我看了杜松子酒文档,但找不到涉及json文件处理的例子。 那么我该如何解决这个问题?

回答

2

在你的代码说var json Article其中类型的文章被定义为

type Article struct { 
    Title string `json:"title"` 
    Body string `json:"body"` 
    File []byte `json:"file"` 
} 

和文件是[]byte类型。类型字节不超过它所持有

Article.File是不一样的r.FormFile其中FormFile是返回3项

的方法所以file, header, err := json.Filefile, header, err := r.FormFile("foo")

见实施返回其他任何和方法描述来自godocs - >here

+0

对,那么如何修复我的代码来获取文件? – Karlom

+0

你应该通过杜松子酒的文档..这里是文档中显示杜松子酒FormFile的方法https://godoc.org/github.com/gin-gonic/gin#Context.FormFile和这笔交易与上传https://godoc.org/github.com/gin-gonic/gin#Context.MultipartForm ..其所有在那里花时间,并了解文档。 – reticentroot

+0

仍然无法弄清楚如何做到这一点。我需要一个例子。 – Karlom

相关问题