golang简单获取上传文件大小的实现代码
2016-09-13 10:11
751 查看
package main import ( "fmt" "io" "log" "net/http" "os" ) // 获取文件大小的接口 type Size interface { Size() int64 } // 获取文件信息的接口 type Stat interface { Stat() (os.FileInfo, error) } // hello world, the web server func HelloServer(w http.ResponseWriter, r *http.Request) { if "POST" == r.Method { file, _, err := r.FormFile("userfile") if err != nil { http.Error(w, err.Error(), 500) return } if statInterface, ok := file.(Stat); ok { fileInfo, _ := statInterface.Stat() fmt.Fprintf(w, "上传文件的大小为: %d", fileInfo.Size()) } if sizeInterface, ok := file.(Size); ok { fmt.Fprintf(w, "上传文件的大小为: %d", sizeInterface.Size()) } return } // 上传页面 w.Header().Add("Content-Type", "text/html") w.WriteHeader(200) html := ` <form enctype="multipart/form-data" action="/hello" method="POST"> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form> ` io.WriteString(w, html) } func main() { http.HandleFunc("/hello", HelloServer) err := http.ListenAndServe(":12345", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } }
相关文章推荐
- MetaQ 安装
- java注解
- 网易2017校招编程:优雅的点
- Python关于类型的一些内置函数
- 一行代码搞定web调用本地代码
- C++ map 插入 困惑
- Java mysql jsp 时间对象的显示与处理
- Java形参是传值还是传引用
- yii2-basic后台管理功能开发之三:自定义GridView列显示
- java web每天定时任务
- eclipse里报:An internal error occurred during: "Building workspace". Java heap space(内存溢出)
- QT各版本环境搭建以及opencv编译配置
- retrofit2+rxJava
- 多年c++ stl的经典总结
- JAVA日志框架
- 用c#读取文件内容中文是乱码的解决方法:
- java编程思想练习
- python kazoo模块的使用
- Java中SJBArrayList自己简单实现ArrayList
- C#日志文件