En el value del "checbox" propagas el "xfid" .. pero necesitas otra variable en tu formulario para propagar otras varaibles como es tu caso .. en ese sentido serían bajo campos "hidden"
Código PHP:
echo "<input type=\"hidden\" name=\"filenames[]\" value=\"".$row['filename']."\">;
De esa forma en tu script de proceso tendrás dos arrays .. uno con tus "ID's" y otro "paralelo" (en cuanto a indices) con los "filenames" .. Las recorres con un bucle for() usando el mismo indice en ambos arrays y listo.
Código PHP:
for ($x=0; $x<=count($_POST['seleccion']); $x++){
echo $_POST['seleccion'][$x]." --> ".$_POST['filenames'][$x]."<br>";
}
Si te fijas . .uso coun() para contar el n° de elementos de uno de los dos arrays . .en concreto el que es único (tus "xfids") y sobre todo por qué dependen de un "checkbox" donde sabemos que sólo los que seleccionas son los que pasan a tu script de proceso y no el resto (o todos con algún tipo de "flag" indicativo).
Un saludo,