数组javascript/jquery的输入文件

数组javascript/jquery的输入文件,javascript,jquery,Javascript,Jquery,我有一个输入类型的文件,我把它放在javascript中的一个变量中,我想在这里操作这些文件 HTML: <input class="file" id="file1" name="uploadedimages[]" type='file' multiple/> 如何删除upload变量中的特定项?我已搜索到输入类型文件为只读文件,除非将其放入数组并使用ajax上载文件,否则无法对其进行操作 我这样做是为了上传到我的图库。首先,我选择多个图像。然后,将有一个预览前的图片首先上传。还可

我有一个输入类型的文件,我把它放在javascript中的一个变量中,我想在这里操作这些文件

HTML:

<input class="file" id="file1" name="uploadedimages[]" type='file' multiple/>
如何删除upload变量中的特定项?我已搜索到输入类型文件为只读文件,除非将其放入数组并使用ajax上载文件,否则无法对其进行操作

我这样做是为了上传到我的图库。首先,我选择多个图像。然后,将有一个预览前的图片首先上传。还可以选择删除照片。我的问题是。如何删除输入文件中的照片文件。因此,可能的解决方案是将输入文件存储到阵列中,然后删除阵列中所需的照片,然后为阵列创建formdata并使用ajax上载编辑、更新

如何删除上载变量中的特定项

若预期结果是文件对象数组,则将调整从原始文件对象拼接数组项的方法,并将拼接数组作为上载发送,而不是尝试从原始文件对象中删除项,同时仍上载原始文件对象

对象没有.splice方法。尝试使用.slice、.call将文件转换为数组,然后在文件对象数组上调用.splice方法,例如

// `_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]);

或者,利用

返回表示当前位置的文件的文件对象 文件列表中指定的索引

返回文件列表中特定索引处的文件

var upload=document.getElementByIdfile1; upload.onchange=函数e{ var files=e.target.files; // https://developer.mozilla.org/en-US/docs/Web/API/FileListitem var firstFile=files.item1; var idstokeep=[0,2];//保留“多个”选择中的第一个“2”文件 var_files=Array.prototype.slice.callfiles.stipleidstokeep[0],idstokeep[1]; console.logfiles,files.length ,_文件,_文件.length ,第一档; }; var upload=document.getElementByIdfile1; upload.onchange=函数e{ var files=e.target.files; // https://developer.mozilla.org/en-US/docs/Web/API/FileListitem var firstFile=files.item1; var idstokeep=[0,2];//保留“多个”选择中的第一个“2”文件 var_files=Array.prototype.slice.callfiles.stipleidstokeep[0],idstokeep[1]; console.logfiles,files.length ,_文件,_文件.length ,第一档; };
对不起。我已经编辑了我的question@JohnChristianDeChavez在帖子上试过js吗?@guest271314嗨,你是什么意思,先生?@JohnChristianDeChavez见更新帖子。尝试将更改事件附加到输入元素以访问文件。请看@guest271314我希望OP会在您的答案评论中说些什么,否则我们会白白浪费时间。据我所知,OP希望通过从此列表中删除一项来更改upload.files对象文件列表。从列表中删除并不意味着更改了原始对象,而不是其他地方的修改版本。作为此操作的结果之一,您应该看到在默认信息中选择了2个文件,而不是3个文件。说明了需要什么。但由于只读,它无法工作。@Regent是的。更新的post尝试使用.splice创建要保留的新文件对象数组的方法,而不是尝试修改、删除或上载原始文件列表对象。另请参见@Regent而不是splice,是否可以利用循环中的files.itemindex返回、上载所需文件,端点处的预期结果是否为文件对象,而不是数组?请参阅更新的stacksnippets。@guest271314您可以使用upload.files.itemindex或upload.files[index]遍历选定的文件,但upload.files[1]={};也不能删除upload.files[1],因为upload.files处于只读状态。@Regent和guest271314。我这样做是为了上传到我的图库。首先,我选择多个图像。然后,将有一个预览前的图片首先上传。还可以选择删除照片。我的问题是。如何删除输入文件中的照片文件。因此,可能的解决方案是将输入文件存储到阵列中,然后删除阵列中需要的照片,然后为阵列创建formdata并使用ajax上载
// `_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]);
  var files = e.target.files;
  // return `file` at `index` `1`
  var firstFile = files.item(1);