核心代碼
代碼解析:
client.SetOutputDirectory("Downloads")
設置下載目錄client.R().SetOutput("test.go").Get("http://127.0.0.1:3333/download
指定下載文件名并進行下載
// 設置輸出目錄路徑,如果目錄不存在,rest將創建一個!
// 這是可選的,如果你計劃在Request中使用絕對路徑。SetOutput '和可以一起使用。
client.SetOutputDirectory("Downloads")// HTTP響應被保存到文件中,類似于curl -o標志
_, err := client.R().SetOutput("test.go").Get("http://127.0.0.1:3333/download")
服務端
package mainimport ("net/http""os""zdpgo_chi""zdpgo_chi/middleware"
)func main() {r := zdpgo_chi.NewRouter()r.Use(middleware.RequestID)r.Use(middleware.RealIP)r.Use(middleware.Logger)r.Use(middleware.Recoverer)r.Get("/download", func(w http.ResponseWriter, r *http.Request) {fileBytes, err := os.ReadFile("server/main.go")if err != nil {panic(err)}w.WriteHeader(http.StatusOK)w.Header().Set("Content-Type", "application/octet-stream")w.Write(fileBytes)return})http.ListenAndServe(":3333", r)
}
客戶端
package mainimport ("fmt""zdpgo_resty"
)func main() {client := zdpgo_resty.New()// 設置輸出目錄路徑,如果目錄不存在,rest將創建一個!// 這是可選的,如果你計劃在Request中使用絕對路徑。SetOutput '和可以一起使用。client.SetOutputDirectory("Downloads")// HTTP響應被保存到文件中,類似于curl -o標志_, err := client.R().SetOutput("test.go").Get("http://127.0.0.1:3333/download")// 使用絕對路徑的OR// 注意:輸出目錄路徑不用于絕對路徑_, err = client.R().SetOutput("Downloads/test2.go").Get("http://127.0.0.1:3333/download")fmt.Println(err)
}