繁体   English   中英

XmlHttpRequest PUT文件上传停止> 1MB

[英]XmlHttpRequest PUT File Upload stopping > 1MB

我正在将文件上传到服务器(在本例中为S3)。 小于1MB的任何文件都可以正常工作。 超过该大小的文件通常会失败,尽管并非每次都会失败。 我有处理小型文件的过程,因此问题似乎不在于安全性,CORS,签名等。这似乎是在发送过程中。

小文件可以工作约100%,但更大的文件不会立即失败,但是会触发几个进度事件,这些事件显示正确的总字节数和应有的增加的加载字节数。 但是,在一些此类进度事件之后,它将触发错误并停止发送。 偶尔会成功发送7-8MB的文件,但相同的文件将在其他尝试下失败。

以下是相关的代码行,其中删除了尽可能多的绒毛。 该url是一个已签名的临时PUT请求,该请求正在运行并通过在PUT调用之前的OPTIONS预检调用。 内容类型标头是必需的,因为它包含在url的签名过程中。

xhr = new XMLHttpRequest()
xhr.upload.onerror = (e) ->
  console.log(xhr)
  console.log(e)
xhr.onerror = (e) ->
  console.log(xhr)
  console.log(e)
  true
xhr.open('PUT', url)
xhr.setRequestHeader('content-type', file.type)
xhr.send(file)

我尝试了不同的文件,大小,扩展名,这些文件似乎没有形成大小以外的任何模式。 文件的大小是一个指标,但不准确。 在此基础上,我寻找超时并将其增大(以防万一)。 我确实尝试过onabort和ontimeout,但都没有被解雇。

当我得到错误时,在事件xhr或xhr.upload中什么也找不到,以指示其停止的原因。

Chrome工具将尝试显示为状态为“(失败)”的PUT。

错误事件显示类型=“错误”,但没有其他信息。 此时的xhr不显示任何内容(readyState:4,响应:“”,responseText:“”,responseType:“”,responseXML:null,状态:0,statusText:“”)

如果有人可以提供任何智慧的话,甚至可以尝试一个牵强的想法,我将不胜感激。 谢谢。

也许这不是ajax请求的问题,而是服务器配置的问题。 您的服务器必须接受最大1Mb的文件上传。

如果您使用php,请在php.ini中设置upload_max_filesizepost_max_size

/* For example */
upload_max_filesize = 10M
post_max_size = 10M

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM