beego文件上传服务器,用beego上传多个文件

它似乎没有像Beego有一个方便的方法来上传多个文件。 GetFile()仅包含标准库中的FromFile()。您可能想要使用标准库的阅读器功能:r.MultipartReader()。

在这样的情况下,我一般是通过调用暴露从控制器的响应读写器:

w = this.Ctx.ResponseWriter

r = this.Ctx.ResponseReader

现在我可以使用net/HTTP包中的标准方法和实施方案外到框架。

在Go上快速搜索上传多个文件会将我引导至blog post。

在保护这个答案从链接腐烂的利益,这里是作者的解决方案:

func uploadHandler(w http.ResponseWriter, r *http.Request) {

switch r.Method {

//GET displays the upload form.

case "GET":

display(w, "upload", nil)

//POST takes the uploaded file(s) and saves it to disk.

case "POST":

//get the multipart reader for the request.

reader, err := r.MultipartReader()

if err != nil {

http.Error(w, err.Error(), http.StatusInternalServerError)

return

}

//copy each part to destination.

for {

part, err := reader.NextPart()

if err == io.EOF {

break

}

//if part.FileName() is empty, skip this iteration.

if part.FileName() == "" {

continue

}

dst, err := os.Create("/home/sanat/" + part.FileName())

defer dst.Close()

if err != nil {

http.Error(w, err.Error(), http.StatusInternalServerError)

return

}

if _, err := io.Copy(dst, part); err != nil {

http.Error(w, err.Error(), http.StatusInternalServerError)

return

}

}

//display success message.

display(w, "upload", "Upload successful.")

default:

w.WriteHeader(http.StatusMethodNotAllowed)

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值