簡體   English   中英

解析多部分表單數據時的異常

[英]exception when parsing multipart form data

我正在嘗試處理文件上載,並且正在使用com.oreilly.servlet.multipart.MultipartParser類解析發布的數據(在cos.jar中)。 但是,當我為MultipartParser調用構造函數時,出現以下異常:

java.io.IOException: Corrupt form data: premature ending
    at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166)
    at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:94)

誰看過這個嗎? 根據我的閱讀,這意味着數據在找到所需邊界之前就結束了。 我怎樣才能解決這個問題?

我正在使用cos.jar 1.0版。

謝謝!

http://www.servlets.com/cos/faq.html

這表明解析客戶端提交的POST請求時出現問題。 可能有很多原因導致此問題:

  • 客戶端按下STOP按鈕(這不是真正的問題,但確實會導致過早結束)
  • 網絡表單中的錯誤
  • Servlet中的錯誤
  • Web服務器中的錯誤
  • 瀏覽器中的錯誤
  • com.oreilly.servlet庫本身中的錯誤

歷史表明,Web服務器是造成問題的最常見原因,可能是因為有太多不同的服務器,並且很少有供應商來測試其二進制上傳功能。

首先,請確保您的客戶未按下“停止”按鈕。 然后,檢查您的問題是否已經發布在此站點上的“您需要了解的Servlet錯誤”資源上。 如果它不為人所知,那么您將成為第一個了解它的人! 您可以在這里與我們分享您的發現!

其次,使用提供的upload.html表單和DemoRequestUploadServlet.java類查看上傳是否正常。 有些人發現了導致問題的錯誤形式。 測試此組合將查看情況是否如此。 一個用戶,塔克爾公爵(Duke Takle)發現此異常是由重定向引起的: 我遇到了與阿爾伯特·史密斯相同的“過早結束”。 我發現問題出在IE 5.0。 困擾我的應用程序在構造MultipartRequest之后執行重定向。 看起來這種構造進行得很好,只是在IE 5.0上,瀏覽器嘗試再次發出請求,而那時ServletInputStream為空。 我已經修改了應用程序以僅編寫所需的響應而不是重定向。 如Tomcat 4.0和Weblogic 6.1中所述,已觀察到並解決了此問題。 其他用戶在處理servlet時發現錯誤,他們調用request.getParameter()而不是multipartRequest.getParameter(),並且某些服務器在調用getParameter()時錯誤地讀取了輸入流,從而導致“部件的意外末尾”。

因此,問題是由我偶然兩次調用MultipartParser構造函數引起的。 由於請求已被處理,因此第二次失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM