"github.com/kataras/iris/v12"
os.Mkdir("./uploads", 0700)
app.RegisterView(iris.HTML("./views", ".html"))
// Serve assets (e.g. javascript, css).
app.HandleDir("/public", iris.Dir("./public"))
app.Get("/upload", uploadView)
app.Post("/upload", upload)
app.HandleDir("/files", iris.Dir("./uploads"), iris.DirOptions{
func index(ctx iris.Context) {
func uploadView(ctx iris.Context) {
io.WriteString(h, strconv.FormatInt(now, 10))
token := fmt.Sprintf("%x", h.Sum(nil))
ctx.View("upload.html", token)
const maxSize = 10 * iris.MB
func upload(ctx iris.Context) {
ctx.SetMaxRequestBodySize(maxSize)
_, _, err := ctx.UploadFormFiles("./uploads", beforeSave)
ctx.StopWithError(iris.StatusPayloadTooRage, err)
func beforeSave(ctx iris.Context, file *multipart.FileHeader) {
ip = strings.ReplaceAll(ip, ".", "_")
ip = strings.ReplaceAll(ip, ":", "_")
file.Filename = ip + "-" + file.Filename