Configuré un servicio frontend simple en JavaScript usando Axios. Este servicio toma una lista de archivos y la envía a mi código de servidor mediante una solicitud posterior. Mi JavaScript se ve así
const testPost = async (files) => { let formData = new FormData(); files.forEach((file) => { formData.append("file", file); }); const res = await axios({ method: "POST", url: baseUrl, data: formData, headers: { "Content-Type": "multipart/form-data", }, }); return res; };Y mi código Go se ve así:
func (h *SendHandler) TestPost(w http.ResponseWriter, r *http.Request) { //Allow CORS here By * or specific origin w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set("Access-Control-Allow-Headers", "Content-Type") formdata := r.MultipartForm fmt.Println(formdata) } Creo que mi problema radica en el cuerpo de mi función TestPost en Go porque hago clic en enviar en mi código de interfaz y recibo una respuesta. En mi función Go, cuando imprimo mis datos de formulario, genera <nil> . Quiero poder acceder a cada archivo de la lista, pero ni siquiera puedo acceder a los datos del formulario. Todavía soy nuevo tanto en el desarrollo web como en Go, por lo que definitivamente hay algo que estoy malinterpretando aquí. ¿Algún consejo?
La documentación de MultipartForm dice:
MultipartForm es el formulario de varias partes analizado, incluidas las cargas de archivos. Este campo solo está disponible después de llamar a ParseMultipartForm.
Solucione llamando a ParseMultipartForm antes de usar r.MultipartForm .
err := r.ParseMultipartForm(maxMemory) if err != nil { http.Error(w, "Bad Request", http.StatusBadRequest) return } // r.MultipartForm is now set. fmt.Println(r.MultipartForm) // does not print nil