package main import ( "github.com/kataras/iris/v12" ) func main() { app := iris.New() app.Logger().SetLevel("debug") app.Get("/", download) app.Get("/download", downloadWithRateLimit) app.Listen(":8080") } func download(ctx iris.Context) { src := "./files/first.zip" ctx.SendFile(src, "client.zip") } func downloadWithRateLimit(ctx iris.Context) { // REPLACE THAT WITH A BIG LOCAL FILE OF YOUR OWN. src := "./files/first.zip" dest := "" /* optionally, keep it empty to resolve the filename based on the "src" */ // Limit download speed to ~50Kb/s with a burst of 100KB. limit := 50.0 * iris.KB burst := 100 * iris.KB ctx.SendFileWithRate(src, dest, limit, burst) }