I am using RequiredFieldValidator, which checks for an invisible TextBox. A TextBox is filled with arbitrary text in the OnClientUploadComplete function. The only thing you cannot do is set the focus when it is checked. This example uses jQuery.
<ajaxToolkit:AsyncFileUpload runat="server" ID="afu" ClientIDMode="AutoID" UploaderStyle="Traditional" OnClientUploadComplete="asyncUploadComplete" OnClientUploadStarted="asyncUploadStarted" />
<asp:RequiredFieldValidator runat="server" ID="rfv" ControlToValidate="txt" Text="The file is required!" SetFocusOnError="false" />
<asp:TextBox runat="server" ID="txt" style="display:none" MaxLength="0" />
<script type="text/javascript">
function asyncUploadComplete(sender, args) {
var contentType = args.get_contentType();
var info = args.get_length() + " bytes";
if (contentType.length > 0) {
info += " - " + contentType;
}
info += " - " + args.get_fileName();
var source = $(sender.get_element());
source.nextAll('input').val(info);
ValidatorEnable(source.nextAll('span')[0], true);
}
function asyncUploadStarted(sender, args) {
var source = $(sender.get_element());
source.nextAll('input').val('');
}
</script>