您需要对uploadHandler函数进行修改,以便在文件和信息保存成功后返回成功的响应。以下是修改后的代码示例:
package main
import (
"fmt"
"io/ioutil"
"mime/multipart"
"net/http"
)
func main() {
http.HandleFunc("/upload", uploadHandler)
err := http.ListenAndServe(":8888", nil)
if err != nil {
fmt.Println("Server error:", err)
}
}
func uploadHandler(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" {
w.WriteHeader(http.StatusMethodNotAllowed)
return
}
file, handler, err := r.FormFile("file")
if err != nil {
w.WriteHeader(http.StatusBadRequest)
fmt.Fprint(w, "Failed to retrieve file from request.")
return
}
defer file.Close()
info := r.FormValue("info")
saveFile(file, handler.Filename)
saveInfo(info)
response := struct {
Status int `json:"status"`
Message string `json:"message"`
}{
Status: http.StatusOK,
Message: "success",
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(response)
}
func saveFile(file multipart.File, filename string) {
data, err := ioutil.ReadAll(file)
if err != nil {
fmt.Println("Failed to read file data:", err)
return
}
// 将文件保存在当前目录下
filePath := "./" + filename
err = ioutil.WriteFile(filePath, data, 0644)
if err != nil {
fmt.Println("Failed to save file:", err)
return
}
fmt.Println("File saved:", filePath)
}
func saveInfo(info string) {
infoFilePath := "./info.txt"
err := ioutil.WriteFile(infoFilePath, []byte(info), 0644)
if err != nil {
fmt.Println("Failed to save info:", err)
return
}
fmt.Println("Info saved:", infoFilePath)
}
以上代码在文件和信息保存成功后,将返回一个状态码为200、消息为”success”的JSON响应。
内容由零声教学AI助手提供,问题来源于学员提问