ZBLOG

package main import ( "encoding/base64" "fmt" "io/ioutil" "net/http" "os" ) func main() { http.HandleFunc("/upload", uploadHandler) err := http.ListenAndServe(":8888", nil) if err != nil { fmt.Println("Server error:", err) } } func u...

根据您提供的代码,可以通过修改uploadHandler函数来解析字符串格式的”info”字段。首先,将字符串转换为JSON对象,然后从中提取所需的字段。

以下是修改后的代码示例:

  1. import (
  2. "encoding/base64"
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "net/http"
  7. )
  8. type Info struct {
  9. Alg string `json:"alg"`
  10. Sign string `json:"sign"`
  11. Version string `json:"version"`
  12. }
  13. func uploadHandler(w http.ResponseWriter, r *http.Request) {
  14. if r.Method != "POST" {
  15. w.WriteHeader(http.StatusMethodNotAllowed)
  16. return
  17. }
  18. file, handler, err := r.FormFile("file")
  19. if err != nil {
  20. w.WriteHeader(http.StatusBadRequest)
  21. fmt.Fprint(w, "Failed to retrieve file from request.")
  22. return
  23. }
  24. defer file.Close()
  25. infoString := r.PostFormValue("info")
  26. infoBytes, err := base64.StdEncoding.DecodeString(infoString)
  27. if err != nil {
  28. w.WriteHeader(http.StatusBadRequest)
  29. fmt.Fprint(w, "Failed to decode info.")
  30. return
  31. }
  32. var info Info
  33. err = json.Unmarshal(infoBytes, &info)
  34. if err != nil {
  35. w.WriteHeader(http.StatusBadRequest)
  36. fmt.Fprint(w, "Failed to parse info JSON.")
  37. return
  38. }
  39. saveFile(file, handler.Filename)
  40. saveInfo(&info)
  41. fmt.Fprint(w, "File and info saved successfully.")
  42. }
  43. func saveInfo(info *Info) {
  44. infoFilePath := "./info.txt"
  45. infoData, err := json.MarshalIndent(info, "", "\t")
  46. if err != nil {
  47. fmt.Println("Failed to encode info:", err)
  48. return
  49. }
  50. err = ioutil.WriteFile(infoFilePath, infoData, 0644)
  51. if err != nil {
  52. fmt.Println("Failed to save info:", err)
  53. return
  54. }
  55. fmt.Println("Info saved:", infoFilePath)
  56. }

在修改后的代码中,我创建了一个名为Info的结构体类型来存储”info”字段的内容。然后,通过使用json.Unmarshal将解码后的字节流转换为Info对象。最后,将该对象保存到文件中。

请注意,在上述代码示例中,我还对错误进行了处理,并向HTTP响应写入适当的状态码和消息。

希望这可以帮助您调整解析方法并成功保存数据。如有任何问题,请随时提问。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=16678

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?