使用beego进行多文件上传

丹尼斯·K

如何使用beego上传多个文件?GetFile方法仅返回第一个文件名。

的HTML:

<form action="/post/save" method="POST" enctype="multipart/form-data">
    <input type="file" name="images" multiple>
</form>

在控制器中:

file, header, err := this.GetFile("images")
if err != nil {
    log.Println("error", err)
} else {
    log.Println("filename", header.Filename)
}

有可能这样做吗?

克劳斯(Will Krause)

似乎Beego没有一种方便的方法可以上传多个文件。GetFile()只是将标准库中的FromFile()包装起来。您可能要使用标准库的阅读器功能:r.MultipartReader()。

在这种情况下,我通常通过调用以下方法来公开控制器的响应读取器和写入器:

w = this.Ctx.ResponseWriter
r = this.Ctx.ResponseReader

现在,我可以以标准方式使用net / http包,并在框架外部实现解决方案。

快速搜索可以在Go中上传多个文件,这使我获得了有用的博客文章

为了保护此答案免受链接腐烂的侵害,以下是作者的解决方案:

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)
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用laravel进行多文件上传和位置存储

来自分类Dev

使用skipper-better-s3和sailjs进行多文件上传会返回相同的密钥

来自分类Dev

如何使用“多文件上传”控件合并多个上传的图像?

来自分类Dev

使用文件上传进行表单验证

来自分类Dev

多文件上传完成

来自分类Dev

多文件上传识别

来自分类Dev

多文件上传错误

来自分类Dev

多文件上传错误

来自分类Dev

多文件上传识别

来自分类Dev

使用javascript进行多文件验证

来自分类Dev

使用线程进行多文件访问

来自分类Dev

Liferay.Upload组件使用多文件上传

来自分类Dev

前端多文件上传WordPress

来自分类Dev

多文件上传未保存

来自分类Dev

多篇文章-上传文件

来自分类Dev

FTP多文件上传PHP

来自分类Dev

多文件上传php for循环

来自分类Dev

将默认文件设置为使用Apache Commons文件上传进行上传

来自分类Dev

我喜欢使用codeigniter进行多个文件上传,以及拖放相同的togmail上传文件

来自分类Dev

使用WCF Rest进行文件上传下载

来自分类Dev

使用Laravel 4进行文件上传mime类型验证

来自分类Dev

在Wordpress中使用PHP进行文件上传

来自分类Dev

正确上传POST文件(使用Locust进行负载测试)

来自分类Dev

如何使用Flask基于上传的文件进行输出?

来自分类Dev

使用ExtJS和Jersey进行文件上传

来自分类Dev

使用下载任务上传文件以进行后台传输好吗?

来自分类Dev

在PHPpress中使用PHP进行文件上传

来自分类Dev

如何使用javascript对要上传的文件进行校验和?

来自分类Dev

使用connect-busboy配置Nginx进行文件上传