golang把文件上传到本地目录
2019-11-30 本文已影响0人
樹上一隻貓
OSS
七牛云的oss免费10G,但需要有备案的域名
与是自己写了一个简易的库,整合到程序中,把文件上传到本地目录
后续可以通过http控制文件接口
minio也是极好的,但要单独部署,有一定的部署维护成本
例子
使用gin写的http的小例子
func main() {
sfile := s_file.NewSFile("./files")
gin.SetMode(gin.DebugMode)
engine := gin.New()
engine.POST("/upload", func(c *gin.Context) {
fileHeader, err := c.FormFile("file")
if err != nil {
c.JSON(400, gin.H{"msg": err.Error()})
return
}
log.Printf("upload file %v", fileHeader.Filename)
file, err := fileHeader.Open()
if err != nil {
c.JSON(400, gin.H{"msg": err.Error()})
return
}
defer file.Close()
content, key, err := sfile.SaveFile(c, fileHeader.Filename, file)
if err != nil {
c.JSON(400, gin.H{"msg": err.Error()})
return
}
c.JSON(200, gin.H{"msg": content, "key": key, "size": fileHeader.Size})
return
})
engine.POST("/delete/:key", func(c *gin.Context) {
err := sfile.DeleteFile(c, c.Param("key"))
if err != nil {
c.JSON(400, gin.H{"msg": err.Error()})
return
}
c.JSON(200, gin.H{"msg": "ok"})
return
})
err := engine.Run(":80")
log.Println(err)
}