uploadOne.html代码如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="http://127.0.0.1:9090/uploadOne" method="post" enctype="multipart/form-data">
文件:<input type="file" name="file" value="">
<input type="submit" value="提交">
</form>
</body>
</html>
uploadMore.html代码如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="http://127.0.0.1:9090/uploadMore" method="post" enctype="multipart/form-data">
文件:<input type="file" name="file" value=""><br>
文件:<input type="file" name="file" value=""><br>
文件:<input type="file" name="file" value=""><br>
<input type="submit" value="提交">
</form>
</body>
</html>
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来测试文件上传。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。