Golang + HTML5 实现多文件上传

时间:2025-03-02 12:34:23

Golang + HTML5 实现多文件上传

---------------------------

今天刚好有点时间,就想试试Golang的多文件上传,下面是实现的代码。

package main

//多文件上传
//作者:LvanNeo
//邮箱:lvan_software@
//日期:2014-04-17
//Golang + HTML5 实现多文件上传

import (
	"fmt"
	"io"
	"log"
	"net/http"
	"os"
	"time"
)

//跳转上传页面
//作者:LvanNeo
//邮箱:lvan_software@
//日期:2014-04-17
func indexHandle(w , r *) {
	defer func() {
		if err := recover(); err != nil {
			("获取页面失败")
		}
	}()

	// 上传页面
	().Add("Content-Type", "text/html")
	(200)
	html := `
		
	    
	        Golang Upload Files

Golang Upload



` (w, html) } //处理文件上传的 Web服务方法 //作者:LvanNeo //邮箱:lvan_software@ //日期:2014-04-17 func UploadServer(w , r *) { defer func() { if err := recover(); err != nil { ("文件上传异常") } }() if "POST" == { (32 << 20) //在使用前必须先调用ParseMultipartForm方法,参数为最大缓存 // () // (()) if != nil && != nil { fhs := ["userfile"] //获取所有上传文件信息 num := len(fhs) ("总文件数:%d 个文件", num) //循环对每个文件进行处理 for n, fheader := range fhs { //获取文件名 filename := //结束文件 file,err := () if err != nil { (err) } //保存文件 defer () f, err := (filename) defer () (f, file) //获取文件状态信息 fstat,_ := () //打印接收信息 (w, "%s NO.: %d Size: %d KB Name:%s\n", ().Format("2006-01-02 15:04:05"), n, ()/1024, filename) ("%s NO.: %d Size: %d KB Name:%s\n", ().Format("2006-01-02 15:04:05"), n, ()/1024, filename) } } return } else { indexHandle(w,r) } } func main() { ("Listening Port: 8086") ("/", indexHandle) ("/upload", UploadServer) err := (":8086", nil) if err != nil { ("ListenAndServe: ", err) } }