2014-09-24 84 views
1

我正在上傳一個帶有Angular的文件到我的節點服務器。有時圖像沒有上傳,我得到的服務器端req.files「未定義」,我無法弄清楚爲什麼。我認爲它與圖像的重量無關:上傳的圖像大約是48KB,而不是16KB。我附上了兩張快照,以顯示作品與其他作品(Chrome開發人員工具的網絡標籤)之間的時間差異(http post)。我可以看到,「時代」(「阻塞」,「發送」)在失敗的那個中並不重疊。也許是這個問題......但我不知道如何解決它。上傳文件Angular.js FormData

Timing in the post of the one that is not uploaded

enter image description here

+0

如果沒有至少看到服務器端代碼,我們無法真正幫助您。 – mscdex 2014-09-24 13:28:52

+0

它會發生在iOS8上嗎?因爲目前有一個關於文件上傳和FormData的錯誤。 – jpmorin 2014-09-24 13:45:03

回答

1

我知道了。

我使用與延遲選項服務器端express.multipart「express.multipart({推遲:真})」

正因爲如此,有時執行到達了我管理的POST請求的代碼

form.on('end', function(){ if (done) return; try { req.body = qs.parse(data); **req.files = qs.parse(files);** if (!options.defer) next(); } catch (err) { form.emit('error', err); } });

所以有時req.files.file =不確定:在express.multipart模塊形式的「結束」事件被觸發,其中模塊設置req.files之前得到用「req.files.file」的形象,只是因爲還沒有設定...

擺脫{defer:true}選項解決了我的問題。與一個或另一個圖像無關。

給您的文檔「推遲」,在express.multipart模塊選項:「推遲處理,並公開了強大的表單對象爲req.form * next()被稱爲無需等待形式的‘

結束’事件。 *例如,如果您需要綁定到「進度」事件,則此選項非常有用。「

相關問題