如何在Wicket,FileUploadField中设置文件扩展名?

vic*_*rio 2 java file-extension wicket file-upload

我有一个FileUploadField组件,我想只上传*.css或*.html文件.但现在,我可以上传任何类型的文件.我怎样才能将文件的扩展名设置为该组件?我的代码和平:

FileUploadField ret = new FileUploadField("uploadField");
ret.setRequired(true);
form.add(fileUploadField);
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 7

请注意,它accept仅适用于现代浏览器(文档),您也可以在服务器端进行检查.

解决方案:

FileUploadField ret = new FileUploadField("uploadField") {
    @Override
    protected void onComponentTag(ComponentTag tag)
    {
        // Default handling for component tag
        super.onComponentTag(tag);

        tag.put("accept", ".css,.html");        
    }

    @Override
    public List<FileUpload> getFileUploads() {
        return filter(super.getFileUploads());
    }

    private List<FileUpload> filter(List<FileUpload> fileUploads) {
        // filter out all files with invalid extension 
    }
};
Run Code Online (Sandbox Code Playgroud)


vic*_*rio 5

我必须在 html 文件中设置它,而不是在 java 文件中:

<input type="file" wicket:id="uploadField" accept=".csv, .html"/>
Run Code Online (Sandbox Code Playgroud)