if you really want, you can give a file a script. type
and on the server
$filename = get_filename_by_id($_GET['id']);
// increment counter
you will believe that you have sent (but not the fact that the customer accepted it)
and this will somewhat increase the load.
another option is to give the user a link to a script that will increment the counter, and then redirected on the file.
but again, you will not be sure that the client has received the file.
in the case of images, they can be displayed in the browser, and on the onload of pictures to send a message to the server. if desired, the client can check the integrity of the picture.