It seems that in Firefox, file inputs are kept in cache like any other input value and only get updated when a new value is added.
When using the cancel button on a file input, it doesn't clear the value. This aligns with the concept that "canceling" the action of selecting another file doesn't necessarily mean clearing the previous selection.
If you want to provide users with the ability to clear these inputs, you could consider adding a button for that purpose:
var fileInputs = document.querySelectorAll('input[type=file]'),
clearInputValue = function(){this.previousSibling.value = '';};
for(var i = 0; i < fileInputs.length; i++){
var button = document.createElement('button');
button.textContent = 'Clear';
button.addEventListener('click', clearInputValue);
fileInputs[i].parentNode.insertBefore(button, fileInputs[i].nextSibling);
}
<input type="file"/><br>
<input type="file"/><br>
<input type="file"/><br>
Alternatively, you can choose to clear the input each time a user searches for a new file:
var fileInputs = document.querySelectorAll('input[type=file]');
var clearInputValue = function(){this.value='';};
for(var i=0;i<fileInputs.length; i++)
fileInputs[i].addEventListener('click', clearInputValue);
<input type="file"/><br>
<input type="file"/><br>
<input type="file"/><br>