uploadOne.HTML代码如下:
Document文件:
uploadMore.HTML代码如下:
Document文件:
文件:
文件:
main.go代码如下:
package main
import (
"net/http"
"os"
"io"
"html/template"
"log"
)
func uploadOne(w http.ResponseWriter,r *http.Request) {
//判断请求方式
if r.Method == "POST" {
//设置内存大小
r.ParseMultipartForm(32 << 20);
//获取上传的第一个文件
file,header,err := r.FormFile("file");
defer file.Close();
if err != nil {
log.Fatal(err);
}
//创建上传目录
os.Mkdir("./upload",os.ModePerm);
//创建上传文件
cur,err := os.Create("./upload/" + header.Filename);
defer cur.Close();
if err != nil {
log.Fatal(err);
}
//把上传文件数据拷贝到我们新建的文件
io.Copy(cur,file);
} else {
//解析模板文件
t,_ := template.ParseFiles("./uploadOne.html");
//输出文件数据
t.Execute(w,nil);
}
}
func uploadMore(w http.ResponseWriter,r *http.Request) {
if r.Method == "POST" {
//设置内存大小
r.ParseMultipartForm(32 << 20);
//获取上传的文件组
files := r.MultipartForm.File["file"];
len := len(files);
for i := 0; i < len; i++ {
//打开上传文件
file,err := files[i].Open();
defer file.Close();
if err != nil {
log.Fatal(err);
}
//创建上传目录
os.Mkdir("./upload",os.ModePerm);
//创建上传文件
cur,err := os.Create("./upload/" + files[i].Filename);
defer cur.Close();
if err != nil {
log.Fatal(err);
}
io.Copy(cur,file);
}
} else {
//解析模板文件
t,_ := template.ParseFiles("./uploadMore.html");
//输出文件数据
t.Execute(w,nil);
}
}
func main() {
http.HandleFunc("/uploadMore",uploadMore);
http.HandleFunc("/uploadOne",uploadOne);
err := http.ListenAndServe(":9090",nil);
if err != nil {
log.Fatal(err);
}
}
通过http://127.0.0.1:9090/uploadOne和http://127.0.0.1:9090/upladMore来测试文件上传。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!