如何将文件浏览页面设置为特定类型的文件?

时间:2014-05-15 00:05:49

标签: jsp file-upload struts2

我可以使用以下简单代码上传文件,但我需要强制用户上传特定类型的文件。目前,用户可以上传任何类型的文件,我可以检查后端的扩展名,但我需要强制他们首先只上传图像。我应该如何以允许浏览的方式进行文件(*。图像)不是所有文件(*。*)

 <s:form method="POST" enctype="multipart/form-data" action="upload">
     <s:file name="file" label="Upload Image"/>
     ...

1 个答案:

答案 0 :(得分:1)

您可以使用HTML <input type="file" />的{​​{3}}。

accept
     

如果type属性的值是file,则此属性指示服务器接受的文件类型;否则就是   忽略。该值必须是以逗号分隔的唯一内容列表   类型说明符:

     
      
  • 以STOP字符(U + 002E)开头的文件扩展名。 (例如:“.jpg; .png; .doc”)
  •   
  • 没有扩展名的有效MIME类型
  •   
  • 表示声音文件的音频/ *( HTML5
  •   
  • 视频/ *代表视频文件( HTML5
  •   
  • 图像/ *代表图像文件( HTML5
  •   

它也适用于<s:file />因为它允许动态属性。


编辑:你是对的,由于某种原因,扩展和mime检查失败,只有HTML5方式有效: the accept attribute

然后这将有效(在大多数浏览器中running demo),建议选择一个图像:

 <s:file name="file" label="Upload Image" accept="image/*" />

这是一个非阻止过滤器,但是:*.*仍然可以从对话框选择框中选择;

因为这只是一个客户端过滤,你必须也检查contentType,最后检查服务器端的Struts2 check out the curent compatibility here

例如:

<interceptor-ref name="fileUpload">
    <param name="allowedTypes">
       image/png,image/gif,image/jpeg
    </param>
    <param name="allowedExtensions">
       .png,.gif,.jpeg,.jpg
    </param>
</interceptor-ref>