Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XmlHttpRequest PUT文件上载停止>;1MB_Javascript_Ajax_File Upload_Xmlhttprequest - Fatal编程技术网

Javascript XmlHttpRequest PUT文件上载停止>;1MB

Javascript XmlHttpRequest PUT文件上载停止>;1MB,javascript,ajax,file-upload,xmlhttprequest,Javascript,Ajax,File Upload,Xmlhttprequest,我正在将文件上载到服务器(在本例中为S3)。任何小于1MB的文件都可以正常工作。超过该大小的文件通常会失败,尽管不是每次都失败。我有处理小文件的流程,所以问题似乎不在于安全性、CORS、签名等,而是在发送过程中 小文件可以100%工作,但更大的文件也不会立即失败,但会触发两个进度事件,显示正确的总字节数并增加加载的字节数。但是,在一些进度事件之后,它会触发错误并停止发送。偶尔会有一个7-8MB的文件成功,但在其他尝试中,同一个文件将失败 下面是相关的代码行,其中尽可能多地去除了绒毛。url是一个

我正在将文件上载到服务器(在本例中为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 tools将尝试显示为状态为“(失败)”的PUT

错误事件显示type=“error”,但不显示其他信息。此时的xhr不显示任何内容(readyState:4,response:,responseText:,responseType:,responseXML:null,status:0,statusText:)


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

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

如果在php.ini中使用php set
upload_max_filesize
post_max_size

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

谢谢,@R3tep。这似乎不是一个硬限制,因为有些文件有时有效,有时无效。在签名的url中,我没有限制文件大小,我知道服务器没有限制文件大小,因为我可以通过他们提供的界面上传到那里。我在stackoverflow上发现了这一点。它列出了使用XmlHttpRequest发送文件的所有可能限制