gpt4 book ai didi

java - 限制文件类型上传组件

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:56:01 26 4
gpt4 key购买 nike

我正在使用 vaadin(7.1.9) 的上传组件,现在我的问题是我无法限制可以使用上传组件发送到服务器的文件类型,但我没有没有找到任何用于该目的的 API。唯一的方法是上传后丢弃错误类型的文件。

public OutputStream receiveUpload(String filename, String mimeType) {

if(!checkIfAValidType(filename)){
upload.interruptUpload();
}

return out;
}

这是正确的方法吗?

最佳答案

不,这不是正确的方法。事实上,Vaadin 确实提供了许多有用的接口(interface),您可以使用它们来监控上传何时开始、中断、完成或失败。这是一个列表:

com.vaadin.ui.Upload.FailedListener;
com.vaadin.ui.Upload.FinishedListener;
com.vaadin.ui.Upload.ProgressListener;
com.vaadin.ui.Upload.Receiver;
com.vaadin.ui.Upload.StartedListener;

这里是一个代码片段来给你一个例子:

@Override
public void uploadStarted(StartedEvent event) {
// TODO Auto-generated method stub
System.out.println("***Upload: uploadStarted()");

String contentType = event.getMIMEType();
boolean allowed = false;
for(int i=0;i<allowedMimeTypes.size();i++){
if(contentType.equalsIgnoreCase(allowedMimeTypes.get(i))){
allowed = true;
break;
}
}
if(allowed){
fileNameLabel.setValue(event.getFilename());
progressBar.setValue(0f);
progressBar.setVisible(true);
cancelButton.setVisible(true);
upload.setEnabled(false);
}else{
Notification.show("Error", "\nAllowed MIME: "+allowedMimeTypes, Type.ERROR_MESSAGE);
upload.interruptUpload();
}

}

这里,allowedMimeTypes 是一个 mime 类型字符串数组。

ArrayList<String> allowedMimeTypes = new ArrayList<String>();
allowedMimeTypes.add("image/jpeg");
allowedMimeTypes.add("image/png");

希望对你有帮助。

关于java - 限制文件类型上传组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21913526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com