max系统下上传图片,能显示图片名,但是图片内容是空的

来源:2-2 编码实战:实现上传接口

杰神

2019-03-18

package handler

import (
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
	"os"
)

func  UploadHandler(w http.ResponseWriter,r *http.Request)  {
    	if r.Method=="GET"{
    		// 返回html页面
    		data,err :=ioutil.ReadFile("./static/view/index.html")
    		if err!=nil{
    			io.WriteString(w,"Internel server error")
				return
			}
    		io.WriteString(w,string(data))
		}else {
			// 接收文件流 以及存储到本地目录
			file,head,err :=r.FormFile("file")

			if err!=nil{
				fmt.Printf("Failed to get data,err:%s\n",err.Error())
				return
			}

			defer file.Close()

            newFile,err :=os.Create("./uploadDir/"+head.Filename)

			if err!=nil{
				fmt.Printf("Failed to create file,err:%s\n",err.Error())
				return
			}

            newFile.Close()

            _,err1 := io.Copy(newFile,file)

			if err!=nil{
				fmt.Printf("err=%v",err1)
				return
			}

            http.Redirect(w,r,"/file/upload/suc",http.StatusFound)
		}
}
// 上传成功
func UploadSucHandler(w http.ResponseWriter,r *http.Request)  {
	io.WriteString(w,"Upload finished!")
}
写回答

3回答

xiaomo

2019-03-18

同学你好,试试把这行代码:

newFile.Close()

改成:

defer newFile.Close()

应该是要在函数将要退出时再关闭文件句柄。

0
2
xiaomo
回复
杰神
不客气哦,加油~~
2019-03-18
共2条回复

杰神

提问者

2019-03-18

具体代码入下图

//img.mukewang.com/szimg/5c8f49020001dabe12561212.jpg

0
0

杰神

提问者

2019-03-18

这个编辑器,代码格式化好丑啊

0
1
xiaomo
是有待优化哦。还是截图看的比较清楚一点
2019-03-18
共1条回复

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程