Golang + HTML5 实现多文件上传

Golang + HTML5 实现多文件上传

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

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

package main

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

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

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

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

Golang Upload



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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值