Si cancellano perché innerHTML += prevede la riscrittura dell'intero innerHTML e quindi per ragioni di sicurezza i file fields vengono svuotati.
Prova questo
Così, aggiungi righe ad una tabella via DOM e le righe precedenti non vengono assolutamente modificate.codice:<html> <head> <script language="javascript"> function addFileUpload(fld) { var new_row = document.getElementById(fld).insertRow(); var new_td = new_row.insertCell(); new_td.innerHTML = '<input type="file" name="uploads[]" />'; } </script> </head> <body> <form name="mioform"> <table id="fileupload"> <tr> <td> <input type="file" name="uploads[]" /> </td> </tr> </table> <input type="button" onclick="addFileUpload('fileupload');" value="more" /> </form> </body> </html>