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语言处理文件上传和多个文件上传的更多相关文章

  1. HTTP文件上传服务器-支持超大文件HTTP断点续传的实现办法

    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传.笔者在以前的博客如何实现支持大文件的高性能HTTP文件上传服务器已经介绍了实现大文件上传的一些基本 ...

  2. 上传本地文件到github(码云)上(小乌龟方式,sourcetree方式)

    一:上传文件到 github 1.打开 https://github.com/ 登录github账号(没有的自己创建),点击右上角创建新仓库 在打开的页面中填写  名字 点击 Create repos ...

  3. 上传漏洞科普[1]-文件上传表单是Web安全主要威胁

    为了让最终用户将文件上传到您的网站,就像是给危及您的服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种 常见的要求,因为它有助于提高您的业务效率.在Facebook ...

  4. SWFUpload多图上传、C#后端跨域传文件带参数

    前几天工作中用到了SWFUpload上传图片,涉及到跨域,因为前端无法实现跨域,所以只能把文件传到后端进行跨域请求,整理分享下. 效果图 前端 html部分 <!DOCTYPE html> ...

  5. PHP上传(单个)文件示例

    通过 PHP,可以把文件上传到服务器. 创建一个文件上传表单 允许用户从表单上传文件是非常有用的. 请看下面这个供上传文件的 HTML 表单: <html> <body> &l ...

  6. ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

    做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...

  7. PHP设计的超强大的文件上传类(单文件上传)

    form.html <!DOCTYPE html> <html> <head> <title>文件上传</title> </head& ...

  8. 解决IIS7.0服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题

    为解决IIS服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题. 定义: A:iis服务器 B:文件服务器 步骤: 1.在B上创建一个用户[uploaduser](并设置密码) 2.给B上的 ...

  9. php 上传文件实例 上传并下载word文件

    上传界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

随机推荐

  1. Unable to connect to zookeeper server within timeout: 5000

    错误 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error crea ...

  2. map转换成JSON的3种方法

    http://www.json.cn/JSON格式校验 1 json-lib <dependency> <groupId>net.sf.json-lib</groupId ...

  3. Oracle分区表常见操作

    Oracle分区表常用于业务中大表使用,如历史交易记录表等,提高表记录查询效率.本文主要描述范围分区表的创建.新增以及索引创建. Oracle操作分区表相关信息 显示数据库所有分区表的信息:DBA_P ...

  4. 数据库连接池技术,c3p0

    百度 谷歌  http://commons.apache.org/   可以找到DBCP   ,  这里选择使用C3P0,百度一下.https://www.mchange.com/projects/c ...

  5. JAVA字符串格式化-String.format()的使用【转】

    原文地址:https://blog.csdn.net/lonely_fireworks/article/details/7962171 常规类型的格式化 String类的format()方法用于创建格 ...

  6. JSP报错Syntax error, insert ";" to complete Statement

    org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 7 in ...

  7. tomcat 启动脚本

    #!/bin/bash##干掉运行中的tomcat  results=把结果赋值给变量,可以保证命令上条执行完再执行下一条#也可以用这句简单的代码按进程名kill: ps -ef | grep 进程名 ...

  8. Windows 2012设置允许单个用户连接多个会话的方法

    WINDOWS 2012 服务器默认只允许单个用户连接一个远程桌面会话,如果已有连接登陆,另外的连接再登陆会踢掉之前的连接.如果需要两个远程桌面同时连接 找到:HKEY_LOCAL_MACHINE\S ...

  9. metasploit framework(一):基本使用

    它位于/usr/share/metasploit-framework 进入到modules目录,有六大模块 exploits:系统漏洞利用的流程,对系统漏洞注入一些特定的代码,使其覆盖程序执行寄存器, ...

  10. 解题5(StringMerge1)

    题目描述 按照指定规则对输入的字符串进行处理. 详细描述: 将输入的两个字符串合并. 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序.这里的下标意思是字符在字符串 ...