1. 程式人生 > >struts2檔案上傳型別限制 之 zip和rar檔案型別

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

zip檔案firefox : application/octet-stream
chrome : application/octet-stream
oprea : application/zip
IE : application/x-zip-compressed


rar檔案firefox : application/x-rar-compressed
chrome : application/octet-stream
oprea : application/x-rar-compressed

IE :  application/octet-stream

使用Struts2上傳檔案,其實使用的是apache的 commons-fileupload-1.1.jar


在實際使用的過程中,使用如下配置fileUpload攔截器並不能過濾上傳的檔案型別,只能處理大小過濾。

<interceptor-ref name="defaultStack"/>
<!-- 限制檔案上傳大小和型別 -->
<interceptor-ref name="fileUpload">
	<param name="maximumSize">10485760</param>
	<param name="allowedTypes">
		application/msword,application/pdf,application/zip
	</param>
</interceptor-ref>



如果不使用預設的攔截器,則action中的屬性不能正確賦值。而使用後,攔截型別不起作用。網上說預設攔截器中已經包含了fileUpload攔截器。那麼這樣配置就是做了兩次攔截。通過查詢資料和嘗試,如下配置的情況下可以實現檔案型別攔截。
<interceptor-ref name="defaultStack">
	<!-- 配置允許上傳的檔案型別,多個用","分隔 -->
	<param name="fileUpload.allowedTypes">
		application/msword,application/pdf,application/zip
	</param>
	<!-- 配置允許上傳的檔案大小,單位位元組 -->
	<param name="fileUpload.maximumSize">10485760</param>
</interceptor-ref>


-------------------------------------------------------------------------------


參考文件:http://www.blogjava.net/winderain/archive/2011/01/04/310971.html