file di input per array javascript / jquery

Ho un file di tipo di input in cui inserisco una variabile in javascript dove voglio manipolare i file.

HTML:

 

JavaScript:

 var upload = document.getElementById('file1'); upload.files.splice(idtoremove,1) //not working 

come posso cancellare un elemento specifico nella variabile di caricamento? Ho la ricerca che il tipo di input è un readonly e non puoi manipolarlo a meno che non lo metti in un array e carichi i file con ajax.

Sto facendo questo per caricare nella mia galleria. per prima cosa seleziono più immagini. quindi ci sarà prima un’anteprima per le immagini prima del caricamento. ci sarà anche un’opzione per rimuovere una foto. il mio problema è come posso cancellare quel file di foto nel file di input. quindi la soluzione ansible è di archiviare il file di input nell’array, quindi eliminare la foto che si desidera nell’array, quindi creare un datadat per l’array e caricare utilizzando ajax

Modifica, aggiornato

come posso eliminare un elemento specifico nella variabile di caricamento?

Se il risultato atteso è un array di oggetti file, regolerà l’approccio alla giunzione degli elementi dell’array dall’object files originale e inviando l’array splicato come upload, invece di tentare di “eliminare” gli oggetti dall’object files originale e di caricare ancora l’object files originale.


L’ object FileList non ha il metodo .splice() . Prova a utilizzare .slice() , .call() per convertire i files in Array , quindi chiama il metodo .splice() sulla matrice di oggetti File , ad esempio;

 // `_files` : `File` object items from original `files` `FileList` // call `.splice()` on items that would be uploaded , // upload `_files` array - _not_ original `files` `FileList` object // eg; `_files`:`File` objects to _keep_ not "delete" from `files` var idstokeep = [0, 2]; // splice , keep first `2` files var _files = Array.prototype.slice.call(files).splice(idstokeep[0], idstokeep[1]); 

Guarda come funziona Array.prototype.slice.call ()?


In alternativa, utilizzare

articolo()

Restituisce un object File che rappresenta il file nell’indice specificato nell’elenco dei file.

per restituire i file a un index specifico all’interno di FileList

  var files = e.target.files; // return `file` at `index` `1` var firstFile = files.item(1); 

 var upload = document.getElementById("file1"); upload.onchange = function(e) { var files = e.target.files; // https://developer.mozilla.org/en-US/docs/Web/API/FileList#item var firstFile = files.item(1); var idstokeep = [0, 2]; // keep first `2` files from `multiple` selection var _files = Array.prototype.slice.call(files).splice(idstokeep[0], idstokeep[1]); console.log(files, files.length , _files, _files.length , firstFile); }; 
   
 var upload = document.getElementById("file1"); upload.onchange = function(e) { var files = e.target.files; // https://developer.mozilla.org/en-US/docs/Web/API/FileList#item var firstFile = files.item(1); var idstokeep = [0, 2]; // keep first `2` files from `multiple` selection var _files = Array.prototype.slice.call(files).splice(idstokeep[0], idstokeep[1]); console.log(files, files.length , _files, _files.length , firstFile); };