doutusheng5879 2015-08-25 11:21
浏览 458
已采纳

通过xmlhttprequest上传文件会生成多部分:NextPart:EOF

I'm trying to upload a file via XMLHttpRequest, currently i'm using golang

When I use CURL to test the upload everything goes fine, and the file is uploaded to Amazon S3 bucket, but when using Javascript I get the following error : multipart: NextPart: EOF

this is the JS part :

document.getElementById("attachment").addEventListener("change", function(e) {
    var file = this.files[0];
    var xhr = new XMLHttpRequest();
    var formdata = new FormData();
    formdata.append("attachment", file);
    boundary=Math.random().toString().substr(2);

    xhr.onreadystatechange = function(e) {
        if ( 4 == this.readyState ) {
            console.log(["xhr upload complete", e]);
        }
    };
    xhr.open("POST", "https://upload_host:8443/upload", true);
    xhr.setRequestHeader("Content-Type","multipart/form-data; charset=utf-8; boundary=---------------------------"+boundary+";");
    xhr.send(formdata);
}, false);

For the go handler :

func upload_handler(w http.ResponseWriter, r *http.Request, m render.Render) {
  w.Header().Set("Access-Control-Allow-Origin", "*")
  file, header, err := r.FormFile("C.Storage.FieldName")
  if err != nil {
    // ERROR THROWN HERE
    ServeHTTP(400, err.Error(), m)
    return
  }

  content, err := ioutil.ReadAll(file)

  if err != nil {
    ServeHTTP(400, err.Error(), m)
    return
  }

  fileSize, err := file.Seek(0, 2) //2 = from end
  if err != nil {
    ServeHTTP(400, err.Error(), m)
    return
  }

  if fileSize > int64(C.Storage.FileSize) {
    ServeHTTP(400, "File size limit exceeded", m)
    return
  }

  ftype := http.DetectContentType(content)

  if !strings.Contains(C.Storage.AllowedMimes, ftype) {
    ServeHTTP(400, "File type not allowed", m)
    return
  }

  //FUNCTION TO UPLOAD TO AMAZON S3 

  file.Close()
}
  • 写回答

1条回答 默认 最新

  • dtcuv8044 2015-08-25 11:39
    关注

    For uploading you can use PlUploader Code example (that is also used for large file uploading).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的