簡體   English   中英

從Struts2文件上傳實用程序發布ajaxForm在IE中不起作用

[英]Post ajaxForm from Struts2 file upload utility not working in IE

背景:我正在尋找一種使用ajax + Struts2異步上傳大文件的工具,我能夠使用servlet進行相同的操作,但是當我修改邏輯以調用struts操作時。 我注意到當我嘗試使用struts2動作上傳大文件時,不會從jquery ajaxForm(options);調用它ajaxForm(options);

我使用了以下鏈接上指定的示例代碼,效果很好。 http://www.simplecodestuffs.com/file-upload-with-progress-bar-using-jquery-in-servlet/

誰能告訴下面的jquery函數調用是否正確用於上傳功能。 $("#uploadtest").ajaxForm(options);

我試過了,但是當上傳大量數據時,它無法在一種特定的瀏覽器中正常工作。 (也就是說,發生了客戶端ajax調用,但是,后端未調用相應的struts2操作,服務器端未生成日志)。 我不明白為什么當jquery ajaxform上傳大文件時,為什么沒有調用struts2動作(分段上傳功能)。

jQuery $("#uploadtest").ajaxForm(options);

jsp片段 <s:form id="uploadtest" name="uploadform" action="aStrutsAction" method="post" enctype="multipart/form-data">

在這里問類似的問題.. IE8 / 9中的FormData

將大文件上傳到Struts2操作的問題是請求可能不符合Struts2默認使用的限制。 在配置設置中,該值設置為2097152。您還可以設置每個動作的限制。 您可以在Struts2文件上載-高級配置中找到更多相關信息:

Struts 2 default.properties文件定義了一些影響文件上傳行為的設置。 您可能會發現有必要更改這些值。 名稱和默認值是:

 struts.multipart.parser=jakarta struts.multipart.saveDir= struts.multipart.maxSize=2097152 

該文檔頁面的下一部分是文件大小限制 ,您在其中注意到下划線框架(struts2,commons-fileupload)使用的文件大小的限制:

有兩個單獨的文件大小限制。 首先是struts.multipart.maxSize它來源於Struts 2的default.properties文件。 出於安全原因,存在此設置是為了禁止惡意用戶上傳非常大的文件來填充服務器磁盤空間。 此設置的默認值約為2兆字節,應將其調整為您需要框架接收的最大文件大小(最大為2 gigs )。 如果要在一個表單上上傳多個文件,則struts.multipart.maxSize適用於合並的總數,而不適用於單個文件的大小。 另一個設置maximumSize是一個攔截器設置,用於確保特定的Action不會收到太大的文件。 在以下示例中,請注意兩個設置的位置:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.multipart.maxSize" value="1000000" /> <action name="doUpload" class="com.example.UploadAction"> <interceptor-ref name="basicStack"/> <interceptor-ref name="fileUpload"> <param name="maximumSize">500000</param> </interceptor-ref> <interceptor-ref name="validation"/> <interceptor-ref name="workflow"/> <result name="success">good_result.jsp</result> </action> </struts> 

如果文件大小超過上述配置設置,則偽進度條將在返回響應后立即停止。 它可以是1%或100%,具體取決於脫粒速度和文件大小。 但是在服務器端,您可能會看到一個異常

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (xxx) exceeds the configured maximum (yyy)

以及以下警告。 如果框架本身沒有超出文件限制,則可以調整文件大小限制。

暫無
暫無

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

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