golang实现文件上传权限验证(超简单)

Go语言创建web server非常简单,部署也很容易,不像IIS、Apache等那么重量级,需要各种依赖、配置。一些功能单一的web 服务,用Go语言开发特别适合。http文件上传下载服务,在很多地方都能用到,大到门户网站,小到公司内部文件共享等。

下面的代码在后台上传处理代码里,先判断“key”字段,如果key 值与设定的“密码”不符合,则不保存文件,达到文件上传权限验证的目的。

注意在go程序运行目录里,创建一个“html”文件夹。

****************************main.go********************************

 

package main

 

import(

        "fmt"

        "io"

        "net/http"

        "os"

        "strings"

)

 

func Upload(whttp.ResponseWriter,r*http.Request){

        r.ParseMultipartForm(32<<20)

 

        key:=strings.Join(r.Form["key"],"")

        if key!="89437589"{

               fmt.Fprintf(w,"authfailed")

               return

        }

 

        file,handler,_:=r.FormFile("file")

        defer file.Close()

 

        f,_:=os.OpenFile("html/"+handler.Filename,os.O_WRONLY|os.O_CREATE,0666)

        defer f.Close()

        io.Copy(f,file)

 

        fmt.Fprintf(w,"success")

}

 

func main(){

        http.Handle("/",http.FileServer(http.Dir("html")))

        http.HandleFunc("/upload",Upload)

        http.ListenAndServe("0.0.0.0:8080",nil)

}

 

*****************************test.htm*******************************

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

   <title>Upload Test</title>

</head>

<body>

   <form enctype="multipart/form-data"action="/upload" method="POST">

       UploadKey:<input type="text" value="89437589"name="key" />

       UploadFile: <input type="file" name="file" />

       <input type="submit" value="Upload" />

   </form>

</body>

</html>

 

************************************************************

如果 UploadKey 的 value修改为非“89437589”,上传返回“authfailed”,表示上传验证失败。

 

可以根据实际情况,添加需要的验证、数据字段,比如user、subdir等。

转载于:https://www.cnblogs.com/luoc83/p/8422464.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值