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

winter13292發表於2013-09-03

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攔截器並不能過濾上傳的檔案型別,只能處理大小過濾。

  1. <interceptor-refname="defaultStack"/> 
  2. <!-- 限制檔案上傳大小和型別 --> 
  3. <interceptor-refname="fileUpload"> 
  4.     <paramname="maximumSize">10485760</param> 
  5.     <paramname="allowedTypes"> 
  6.         application/msword,application/pdf,application/zip 
  7.     </param> 
  8. </interceptor-ref> 
  1. <interceptor-ref name="defaultStack"/>  
  2. <!-- 限制檔案上傳大小和型別 -->  
  3. <interceptor-ref name="fileUpload">  
  4.     <param name="maximumSize">10485760</param>  
  5.     <param name="allowedTypes">  
  6.         application/msword,application/pdf,application/zip  
  7.     </param>  
  8. </interceptor-ref>  



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

相關文章