File upload failing in golang
Solution 1
To be honest I have no idea how do you even get error as your HTML is not form. But I think you getting error because by default form is send as GET request while multipart/form-data
should be send via POST. Here is example of minimal form which should work.
<form action="/uploadfile/" enctype="multipart/form-data" method="post">
<input type="file" name="file" id="file" />
<input type="hidden"name="token" value="{{.}}" />
<input type="submit" value="upload" />
</form>
Solution 2
The issue is that you must include the header that contains the content type.
req.Header.Add("Content-Type", writer.FormDataContentType())
This is included in the mime/multipart
package.
For a working example please check this blog post.
Dany
Graduate Student at The University of Texas at Dallas | Coder | Former Employee of Verizon and Accenture About Dinesh Code Repository
Updated on June 19, 2022Comments
-
Dany almost 2 years
In my use case I am trying to upload a file to server in golang. I have the following html code,
<div class="form-input upload-file" enctype="multipart/form-data" > <input type="file"name="file" id="file" /> <input type="hidden"name="token" value="{{.}}" /> <a href="/uploadfile/" data-toggle="tooltip" title="upload"> <input type="button upload-video" class="btn btn-primary btn-filled btn-xs" value="upload" /> </a> </div>
And the server side,
func uploadHandler(w http.ResponseWriter, r *http.Request) { // the FormFile function takes in the POST input id file file, header, err := r.FormFile("file") if err != nil { fmt.Fprintln(w, err) return } defer file.Close() out, err := os.Create("/tmp/uploadedfile") if err != nil { fmt.Fprintf(w, "Unable to create the file for writing. Check your write access privilege") return } defer out.Close() // write the content from POST to the file _, err = io.Copy(out, file) if err != nil { fmt.Fprintln(w, err) } fmt.Fprintf(w, "File uploaded successfully : ") fmt.Fprintf(w, header.Filename) }
When I try to upload the file, I am getting
request Content-Type isn't multipart/form-data
error in server side.Could anyone help me on this?