簡體   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