ajax如何提交文件类型,javascript – Ajax上传文件到内容类型为Mult...

我正在尝试使用多部分表单将音频文件上传到Golang服务器.但是,Go返回错误:

multipart: NextPart: bufio: buffer full

我相信这表明我的Javascript请求在多部分格式中没有.这是我的Javascript:

function UploadFile(file) {

var xhr = new XMLHttpRequest();

if (file.type == "audio/mpeg" && file.size <= $id("MAX_FILE_SIZE").value) {

// start upload

var boundary = '---------------------------' + Math.floor(Math.random()*32768) + Math.floor(Math.random()*32768) + Math.floor(Math.random()*32768);

xhr.open("POST", $id("upload").action, true);

xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary);

xhr.setRequestHeader("X_FILENAME", file.name);

xhr.send(file);

}

}

这是我的Golang服务器处理程序:

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

var (

status int

err error

)

defer func() {

if nil != err {

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

}

}()

// parse request with maximum memory of _24Kilobits

const _24K = (1 << 20) * 24

if err = r.ParseMultipartForm(_24K); nil != err {

fmt.Println(err)

status = http.StatusInternalServerError

return

}

for _, fheaders := range r.MultipartForm.File {

for _, hdr := range fheaders {

// open uploaded

var infile multipart.File

if infile, err = hdr.Open(); nil != err {

status = http.StatusInternalServerError

return

}

// open destination

var outfile *os.File

if outfile, err = os.Create("./uploaded/" + hdr.Filename); nil != err {

status = http.StatusInternalServerError

return

}

// 32K buffer copy

var written int64

if written, err = io.Copy(outfile, infile); nil != err {

status = http.StatusInternalServerError

return

}

w.Write([]byte("uploaded file:" + hdr.Filename + ";length:" + strconv.Itoa(int(written))))

}

}

}

如果有人有任何想法我为什么会收到这个错误,我会非常感激.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值