1. 程式人生 > >Struts2檔案上傳 超過大小限制無法跳轉至指定input頁面問題,瀏覽器提示連線已重置?根本原因

Struts2檔案上傳 超過大小限制無法跳轉至指定input頁面問題,瀏覽器提示連線已重置?根本原因

Struts2檔案上傳 超過大小限制無法跳轉至指定input頁面問題。瀏覽器提示連線已重置問題:



根本原因:

此問題在用tomcat7/8/9版本會出現。根本原因Tomcat7/8/9與struts2的相容性問題

當request的最大的位元組數(不包括傳輸編碼開銷)超過tomcat伺服器conf檔案server.xml中
maxSwallowSize的設定值將會被Tomcat終止上傳,tomcat會判定是個失敗的上傳,
不會把這個request再傳送到應用的servlet物件,所以不會有應用的servlet對這個request沒有任何響應。
但是客戶端收不到超過上傳限制的response,所以客戶端會仍然傳送它。所以tomcat會發送一個

連線重置給客戶端(瀏覽器)。

這樣就會出現檔案上傳 超過大小限制無法跳轉至指定input頁面,瀏覽器提示連線已重置的問題。

************************************************************

回覆資訊:


  • 2017-07-14 04:381樓
  • 很感謝,按照你的方式能解決!但我有一點不明白:在我沒有配置maxSwallowSize="-1"時,使用原生commons-fileupload來上傳大檔案,或者使用servlet3.0上傳大檔案,瀏覽器都沒有提示連線已重置,都可以上傳成功,唯獨使用struts2時上傳大檔案會被tomcat攔截下來,按照這個現象來說,不應該是tomcat的配置問題啊,能幫我解釋解釋嗎?
    • 2017-07-14 10:162樓
    • 按照你的除錯結果,不應該是tomcat的配置問題,而是Struts2的問題。
      你可以在你說的三種方式上進行斷點除錯,重點在第三種情形使用者上傳時tomcat生成單例項Servlet後,struts2過濾器過濾過程中的呼叫doFilter()語句前,如你所述問題很大可能應該出現在這裡。
      1,使用者上傳------tomcat(生成單例項servlet3.0)------自己編寫上傳函式。
      2,使用者上傳------tomcat(生成單例項servlet)------commons-fileupload。
      3,使用者上傳------tomcat(生成單例項servlet)------struts2------commons-fileupload。
    • 回覆chuan_jing:今天在遇到sringMVC 轉發到jsp時出現405錯誤:JSPs only permit GET POST or HEAD的問題時,突然想到你的這個疑問,其實不是Tomcat的問題,也不是struts2的問題,而是Tomcat7/8/9與struts2的相容性問題(我猜想是:因為Tomcat的版本更迭,添加了新功能,新的安全特性,在Tomcat提供給struts2的資訊流中,相比以前版本的Tomcat的資訊流的某些資訊發生改變,但struts2沒有針對這些改變做相應的調整,這就出現了相容性的問題,所以出現上述情況)。

*************************************************************

解決方法:修改maxSwallowSize為-1,注意:-1不一定適合實際應用,

詳細資訊可以去tomcat官網檢視說明文件,下面是配置資訊詳細介紹頁面:https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
tomcat伺服器conf檔案server.xml中maxPostSize與maxSwallowSize的設定值:如果沒有指定預設的2097152(2MB)的預設值,小於0表示無限制。

例子:

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxSwallowSize="-1"/>

這樣就會正常跳轉到自己定義好的input錯誤頁面。

實際的應用中maxSwallowSize的值是要根據業務需求設定,因為超過maxSwallowSize的值的request,tomcat伺服器不傳到應用的Servlet物件,所以解決方法有兩種:

1. 通過tomcat伺服器層面設定解決,這個問題超出本人的能力範圍了。

2. 另外可以在前端頁面上傳檔案時進行是否超出檔案上傳的限制值進行判斷提示,配合設定適當的maxSwallowSize的值使用。

相關推薦

Struts2檔案 超過大小限制無法指定input頁面問題瀏覽器提示連線根本原因

Struts2檔案上傳 超過大小限制無法跳轉至指定input頁面問題。瀏覽器提示連線已重置問題: 根本原因: 此問題在用tomcat7/8/9版本會出現。根本原因是Tomcat7/8/9與struts2的相容性問題: 當request的最大的位元組數(不包括傳輸編碼開銷

修改php檔案大小限制upload_max_filesize

Question 當php指令碼上傳的檔案大小超過php.ini中post_max_size,upload_max_filesize的限制的時候頁面不會給出提醒,檔案也上傳失敗。 php.ini 配置對php上傳檔案大小的影響引數有: 配置項

wordpress配置了騰訊CDN無法登入後臺後臺顯示:連線

首先,關閉中間源。 然後,修改檔案快取時間,之所以無法登入後臺就是後臺檔案,php檔案被快取了,我們要設定wp-admin和php檔案快取時間為0秒,如下 然後再次重新整理,我們就能正常登入

Struts2檔案 —— 限制檔案大小及型別

在檔案上傳的時候,有可能需要對檔案的大小和型別做出限制。 Struts 2支援直接在fileUpload 攔截器上設定引數來進行限制。 在引用fileUpload 攔截器的時候,可以指定3 個引數(指定<param>子元素) : allowedTypes 指定允許上傳的檔案的型別, 如

struts2檔案設定臨時目錄和限制檔案大小 以及 批量

在src下新建,struts.properties檔案,檔名是固定,用來更改一些預設配置。 可以在struts2的jar包下找到預設的配置檔案,一般不不去修改修改那個檔案。 struts.multipart.saveDir=d:/upload struts.multipa

struts2檔案大小預設限制問題

struts2中檔案上傳的二個限制,一個是struts.multipart.maxSize,如果不設定,struts2 的核心包下的default.properties檔案裡有預設的大小設定struts.multipart.maxSize=2097152,即2M. 這是s

[原創]K8 Struts2 Exp 20170310 S2-045(Struts2綜合漏洞利用工具) [原創]Struts2奇葩環境任意檔案工具(解決菜刀無法檔案亂碼等問題)

工具: K8 Struts2 Exploit組織: K8搞基大隊[K8team]作者: K8拉登哥哥部落格: http://qqhack8.blog.163.com釋出: 2014/7/31 10:24:56簡介: K8 Stru

[原創]Struts2奇葩環境任意檔案工具(解決菜刀無法檔案亂碼等問題)

 上面這問題問得好  1 不知道大家有沒碰到有些Strus2站點  上傳JSP後訪問404 或者503    注意我說的是404或503不是403(要是403換個css/img等目錄或許可以)    但對於明明

Struts2檔案無法取得檔名及檔案型別問題的解決

     最近寫一網站,用struts2加Common-FileUpload實現照片上傳,在頁面表單裡寫成這樣:<s:file name="uploadPhoto"/>,然後在action中用以下三個屬性:     private File uploadPhoto

Struts2檔案在配置fileUpload攔截器中設定檔案大小無效的問題

action的配置如下: <action name="uploadSong" class="uploadSongAction">      <interceptor-ref name="fileUpload">                 <

struts2檔案型別限制 之 zip和rar檔案型別

zip檔案firefox : application/octet-streamchrome : application/octet-streamoprea : application/zipIE : application/x-zip-compressedrar檔案firef

struts2 檔案與下載

檔案上傳: 三種上傳方案 虛擬路徑與真實路徑 /upload copyFile與copydirectory 檔案上傳的三種方案 1.將上傳的檔案以二進位制的形式存放到資料庫 oa系統 activiti工作流框架 2.將檔案上傳到檔案伺服器(硬碟足夠大)中 3.上傳到t

springboot三種配置檔案下載大小的配置

配置檔案為application.yml格式: spring: http: multipart: enabled: true max-file-size: 30MB max-request-size: 30MB第二種: package com.haiyiso

第29講 .struts2檔案

1複製HeadFirstStruts2chapter07 改名:HeadFirstStruts2chapter08,刪除所有的包和類。新建fileUpload.jsp,form表單 enctype="multipart/form-data"實現二進位制傳輸, <%@ pag

分享知識-快樂自己:Struts2檔案檔案下載

1)Struts2單檔案上傳   action:類檔案 package com.mlq.action; import com.opensymphony.xwork2.ActionSupport; import org.apache.commons.io.FileUtils; imp

Struts2 檔案和下載

一、 檔案上傳 Struts2檔案上傳時,要使用Struts的標籤<s:file /> 例如:(以下的程式碼是一個小專案中的一部分,只給出檔案上傳下載部分程式碼,瞭解思想即可) 檔案上

附件大小限制

allow 長度 uri run 編輯 http length ring limits 在附件上傳時,除了在程序中對大小限制之外,還要進行一些其他的配置 1. maxRequestLength (單位是KB) IIS6 默認允許的附件最大上傳大小為4M,在IIS7之

git 解決檔案超過100m不能的問題

網上試了很多方法都不能解決我的問題 我看了一下 在git push的時候提示上圖,這是因為git上傳檔案有限制 解決辦法 用於版本化大檔案的開源Git擴充套件 Git大檔案

struts2 檔案

struts2的檔案上傳功能使用的是apache下的commons-fileupload來實現。 Jsp的表單要求是post提交,並且要求 enctype=”multipart/form-data” jsp表單 <form action="upload.acti

struts2檔案下載

package com.zking.five; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStre