go语言处理文件上传和多个文件上传
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来测试文件上传。
go语言处理文件上传和多个文件上传的更多相关文章
- HTTP文件上传服务器-支持超大文件HTTP断点续传的实现办法
最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传.笔者在以前的博客如何实现支持大文件的高性能HTTP文件上传服务器已经介绍了实现大文件上传的一些基本 ...
- 上传本地文件到github(码云)上(小乌龟方式,sourcetree方式)
一:上传文件到 github 1.打开 https://github.com/ 登录github账号(没有的自己创建),点击右上角创建新仓库 在打开的页面中填写 名字 点击 Create repos ...
- 上传漏洞科普[1]-文件上传表单是Web安全主要威胁
为了让最终用户将文件上传到您的网站,就像是给危及您的服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种 常见的要求,因为它有助于提高您的业务效率.在Facebook ...
- SWFUpload多图上传、C#后端跨域传文件带参数
前几天工作中用到了SWFUpload上传图片,涉及到跨域,因为前端无法实现跨域,所以只能把文件传到后端进行跨域请求,整理分享下. 效果图 前端 html部分 <!DOCTYPE html> ...
- PHP上传(单个)文件示例
通过 PHP,可以把文件上传到服务器. 创建一个文件上传表单 允许用户从表单上传文件是非常有用的. 请看下面这个供上传文件的 HTML 表单: <html> <body> &l ...
- ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)
做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...
- PHP设计的超强大的文件上传类(单文件上传)
form.html <!DOCTYPE html> <html> <head> <title>文件上传</title> </head& ...
- 解决IIS7.0服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题
为解决IIS服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题. 定义: A:iis服务器 B:文件服务器 步骤: 1.在B上创建一个用户[uploaduser](并设置密码) 2.给B上的 ...
- php 上传文件实例 上传并下载word文件
上传界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
随机推荐
- 【380】python 获取列表排序后的索引列表
参考:Equivalent of Numpy.argsort() in basic python? - Stack Overflow 通过 enumerate 实现 [i for i,v in sor ...
- JAVAWEB 一一 Spirng(AOP面向切面)
applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <!-- < ...
- 使用 Asp.Net Response.Write() 制作实时进度条
准备: 一个 StudyResponse.aspx 页面和 CodeBehind 文件. Web 页面中的内容如下: <%@ Page Language="C#" AutoE ...
- 吴裕雄 30-MySQL 及 SQL 注入
如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题.本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符.所谓SQL注入,就是通过 ...
- QPS/TPS/并发量/系统吞吐量的概念
我们在日常工作中经常会听到QPS/TPS这些名词,也会经常被别人问起说你的系统吞吐量有多大.这个问题从业务上来讲,可以理解为应用系统每秒钟最大能接受的用户访问量.或者每秒钟最大能处理的请求数: QPS ...
- CentOS7下解决yum install mysql-server没有可用包
# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm -- http://repo.mysql.com/mysq ...
- CSS中的通用字体
往往设计师在设计时一厢情愿地去思考问题,那样会带来很多潜在的麻烦.事实上你可以为网页设计任意字体,包括艺术字体.也许你的计算机中已经安装了很多字体,但是不能够保证所有的浏览者都已经安装了相同的字体,因 ...
- 修改weblogic启动模式:client改为server
1.生产模式 -> 开发模式 Step 1:将domain下的 /weblogic/domain/app_domain/bin/setDomainEnv.sh文件的PRODUCTION_MODE ...
- vps vultr centos7 搭建 伟皮恩
vultr 配置 64 bit OS CentOS 7 ×64 20 GB SSD 1 CPU 512MB Memory 500GB Bandwidth √ Enable IPv6 √ ...
- poj1308(并查集)
题目链接:http://poj.org/problem;jsessionid=436A34AE4BE856FB2DF9B264DCA9AA4E?id=1308 题意:给定一些边让你判断是否构成数. 思 ...