Struts2_文件上传关于限制文件名、类型及大小

对未来真正的慷慨,就是把一切都献给现在。

通常Struts2在文件上传的时候,需要限制文件名、类型及文件大小。

1.关于文件名

在execute()方法中直接修改上传之后的文件名。

public String execute() throws Exception{
    String pathname=ServletActionContext.getServletContext().getRealPath("/upload/"+UUID.randomUUID().toString()+photoFileName.substring(photoFileName.lastIndexOf(".")));
    File destFile=new File(pathname);
    FileUtils.copyFile(photo, destFile);
    return "success";
    }

2.关于文件类型及文件大小

  如果要限制文件的格式,直接在struts.xml中重新配置fileUpload拦截器即可。但是文件大小要注意,因为文件如果不上传,服务器是不知道文件具体大小的,也就意味着,如果要控制文件大小,必须先将文件上传,而且一定经过common-fileupload组件实现上传功能,又会出发默认大小限制(2M),所以,通常可以将默认文件大小改成比实际限制大小大一点的配置
先建一个message.proporties的文件:

struts.messages.error.content.type.not.allowed=\u60A8\u4E0A\u4F20\u7684\u6587\u4EF6{1}\u683C\u5F0F\u4E0D\u6B63\u786E
struts.messages.error.file.too.large=\u60A8\u4E0A\u4F20\u7684\u6587\u4EF6{1}\u8D85\u51FA\u6700\u5927\u8303\u56F4

注意:里面的值eclipse会自动转义。

struts.xml配置:




    <struts>
    
        <constant name="struts.custom.i18n.resources" value="message"/>
    
        <constant name="struts.multipart.maxSize" value="5242880"/>
        <package name="root" namespace="/" extends="struts-default">
            <action name="login" class="com.action.LoginAction">
           
                <interceptor-ref name="fileUpload">
                
                    <param name="allowedTypes">
                        image/bmp,image/png,image/gif,image/pjpeg,image/jpg 
                    param>
                
                    <param name="maximumSize">2097152param>
                interceptor-ref>
                
                <interceptor-ref name="defaultStack"/>
                <result>/success.jspresult>
            action>
        package>
    struts>

Struts2_文件上传关于限制文件名、类型及大小_第1张图片

你可能感兴趣的:(struts2)