code: protected void doHandleFileAjaxActionRequest(final Request request) {
  		// Protect against client-side tampering of disabled components
  		if (isDisabled()) {
  			throw new SystemException("File widget is disabled.");
  		}
  
  		// Check for file id
  		String fileId = request.getParameter(FILE_UPLOAD_ID_KEY);
  		if (fileId == null) {
  			throw new SystemException("No file id provided for ajax action.");
  		}
  
  		// Check valid file id
  		FileWidgetUpload file = getFile(fileId);
  		if (file == null) {
  			throw new SystemException("Invalid file id [" + fileId + "].");
  		}
  
  		// Run the action
  		final Action action = getFileAjaxAction();
  		if (action == null) {
  			throw new SystemException("No action set for file ajax action request.");
  		}
  
  		// Set the selected file id as the action object
  		final ActionEvent event = new ActionEvent(this, "fileajax", fileId);
  		Runnable later = new Runnable() {
  			@Override
  			public void run() {
  				action.execute(event);
  			}
  		};
  
  		invokeLater(later);
  	}
docs: Handle a file action AJAX request.
  
  @param request the request being processed