将文件从 JavaScript 传递到 Go 服务器

Passing file from JavaScript to Go server

我正在尝试将一组 FORM 值从客户端传递到服务器。 FORM 值还包括文件、用户名和其他详细信息。

如何在服务器端解码文件。这里我使用 go lang 作为我的服务器。 我在我的 golang 中创建了一个模型,这样我就可以解码服务器调用期间传递的值。

type Details {

    PhotographValue         os.File `json:"photographvalue"`
    AdharValue          os.File `json:"adharvalue"`
    userName        string `json:"username"`
}

//解码部分

var clientValues Details
decoder := json.NewDecoder(req.Body)
err := decoder.Decode(&clientValues)

在 clientValues 中我得到字符串数据。但文件数据为零。我怎样才能做到这一点?

PS : 我没有使用通常的文件上传方法,因为我还有其他详细信息,我在 javascript 中处理这些详细信息,然后再传递到服务器。

如果您将文件作为多部分表单的一部分传递,您应该将其解析为表单并稍后作为单独的 jsons 使用。

func handleForm(w http.ResponseWriter, req *http.Request) {
    const maxAllowedSizeInBytes = 512 * 1024
    err := req.ParseMultipartForm(maxAllowedSizeInBytes)
    if err != nil {
        // handle error here
        w.WriteHeader(http.StatusBadRequest)
        return
    }

    photographValue, _, err := req.FormFile("photographvalue")
    if err != nil {
        // handle error here
        w.WriteHeader(http.StatusBadRequest)
        return
    }
    adharValue, _, err := req.FormFile("adharvalue")
    if err != nil {
        // handle error here
        w.WriteHeader(http.StatusBadRequest)
        return
    }

    // photograph := struct{...} {}
    // json.NewDecoder(file).Decode(&photograph)
    // or write it to file
    username := req.FormValue("username")
    ....
}

photographValue 和 adharValue 符合 io.Reader,您可以使用它来读取您的 json 文件或将其写入系统中的文件。