В веб-приложении обычно в HTTP-запросе получаются и файлы, и данные JSON. Чтобы успешно обрабатывать эти элементы, важно понимать, как эффективно их анализировать.
Рассмотрим сценарий, в котором у вас есть интерфейс AngularJS, который отправляет запрос на сервер Go. Запрос содержит файл («файл») и данные JSON («doc»). Ваша цель — проанализировать PDF-файл и данные JSON из этого запроса.
Чтобы решить эту проблему, вам необходимо отдельно обработать файл и данные JSON. Используя http.(*Request).MultipartReader() и перебирая части с помощью NextPart(), вы можете извлечь и проанализировать каждый элемент.
mr, err := r.MultipartReader()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
Для каждой части в многочастном запросе:
part, err := mr.NextPart()
if err == io.EOF {
break
}
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
Если часть является файлом (part.FormName() == "file"):
outfile, err := os.Create("./docs/" part.FileName())
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer outfile.Close()
_, err = io.Copy(outfile, part)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
Если часть содержит данные JSON (part.FormName() == "doc"):
jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&doc)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
После анализа файла и данных JSON вы можете выполнить любую необходимую постобработку, например сохранить ее в базе данных или отправить ответ клиенту. .
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3