Edit, Updated
how can i delete a specific item in upload variable?
If expected result is array of file objects would adjust approach to splicing array items from original files
object - and sending spliced array as upload - instead of attempting to "delete" items from original files
object and still uploading original files
object.
FileList object does not have .splice()
method . Try utilizing .slice()
, .call()
to convert files
to Array
, then call .splice()
method on array of File
objects, e.g.;
// `_files` : `File` object items from original `files` `FileList`
// call `.splice()` on items that would be uploaded ,
// upload `_files` array - _not_ original `files` `FileList` object
// e.g.; `_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]);
See how does Array.prototype.slice.call() work?
Alternatively , utilize
item()
Returns a File object representing the file at the
specified index in the file list.
to return files at specific index
within 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);
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<input class="file" id="file1" name="uploadedimages[]" type='file' multiple/>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…