Hello, I’m having a problem with the Upload component, I have created a component based on the example I saw and Its workig except that when I click the upload file button and if I dont have selected any file, the compoenent throws a null exception, how do I fix this? , where do I check if there is a file selected?
Here is part of the code:
ImageUploader receiver = new ImageUploader();
uploadImgs = new Upload("", receiver);
uploadImgs.setButtonCaption("Subir Imagen");
uploadImgs.addSucceededListener(receiver);
uploadImgs.focus();
uploadImgs.addStartedListener(new UploadStartedLis());
uploadImgs.addFailedListener(new UploadFailedLis());
//not sure why 2 SuccedededListener, but in one you return an OutputStream
uploadImgs.addSucceededListener(new UploadSuccessLis());
....
.....
......
class ImageUploader implements Receiver, SucceededListener {
private static final long serialVersionUID = -403236584428263229L;
public File file;
FileOutputStream fos = null;
public OutputStream receiveUpload(String filename, String mimeType)
{
try{
if(filename.length()==0) //not sure if this is the problem
{
Notification.show("Error", "favor de seleccionar un archivo", Notification.Type.WARNING_MESSAGE);
return null;
}
...
...
...
private class UploadSuccessLis implements Upload.SucceededListener{
private static final long serialVersionUID = -4584873468771037333L;
@Override
public void uploadSucceeded(SucceededEvent event) {
//System.out.println( "Terminado:" + event.getFilename()+ " - "+ event.getMIMEType() );
//Notification.show("Error", "Imagen guardada", Notification.Type.TRAY_NOTIFICATION);
if( !event.getMIMEType().equalsIgnoreCase("image/jpeg") ) {
uploadImgs.interruptUpload();
deleteFile(event.getFilename());
Notification.show("Error", "El archivo no es tipo 'image/jpeg'.", Notification.Type.ERROR_MESSAGE);
Log.Warning("OrderingImgs", "uploadStarted", "El archivo no es tipo 'image/jpeg' archivo:"+event.getFilename() + " mimetype:"+ event.getMIMEType() );
lblInfo.setValue("");
return;
}
Thanks for your help.