首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理大文件上传

处理大文件上传
EN

Stack Overflow用户
提问于 2013-10-09 08:56:35
回答 1查看 6.8K关注 0票数 4

我正在使用golang net/http包构建一个webserver.And,现在我必须处理大文件上传,这意味着服务器可能会收到请求,Expect: 100 Continue.I将不会向客户发送响应,直到每次完成一个请求并返回时,所有数据都是received.However之后,golang默认会发送一个响应,我如何实现?

EN

回答 1

Stack Overflow用户

发布于 2018-04-09 08:31:07

使用request.ParseMultipartForm,

ParseMultipartForm将请求体解析为多部分/表单数据。对整个请求正文进行解析,其文件部分的maxMemory字节最多存储在内存中,其余部分存储在临时文件中的磁盘上。如果有必要,ParseMultipartForm会调用ParseForm。在对ParseMultipartForm进行一次调用之后,后续调用没有任何效果。

代码语言:javascript
复制
So yo just can do:

    import(
       "ioutil"
       "net/http"
    )
//check all posible errors, I´m assuming you just have one file per key
    func handler(w http.ResponseWriter, r *http.Request) {
        r.ParseMultipartForm(1000000) //1 MB in memory, the rest in disk
        datas := r.MultipartForm
        for k, headers := range datas.File {
            auxiliar, _ := headers[0].Open() //first check len(headers) is correct
            fileName:=headers[0].Filename
            file, _ := ioutil.ReadAll(auxiliar)
            // do what you need to do with the file
    }
}

在frontEnd中,您应该有如下所示的javascript:

代码语言:javascript
复制
function handleFile(url,file){
  let data=new FormData();
  data.append("key",file); //this is the key when ranging over map at backEnd
  fetch(url,{method:"PUT",body:data})
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19267336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档