javascript - 如何从输入多个文件中删除 1 个文件
问题描述
我有输入
<input id="0_input_id"
onchange="input_change(0)"
name="files[]"
type="file"
required multiple
class="drop_zone_input">
并具有删除功能
function delete_file(file_count, i, input_count)
{
const input = document.getElementById("0_input_id");
input.files[i] = undefined;
}
但是这个文件没有删除,我不能使用 input.value = null 因为它清除了所有输入,有助于删除 1 个文件。
解决方案
HTML<input type="file">
的files
属性必须是类型的对象FileList
。您不能修改 a FileList
,因此要删除一个项目,您需要将其转换为数组,删除该项目,然后将其转换为新的FileList
。
如何从文件列表中删除文件
https://stackoverflow.com/a/47522812/15584743
https://stackoverflow.com/a/52079109/15584743
const input = document.querySelector('input');
input.addEventListener('change', function(e)
{
console.log('Files:', this.files);
this.files = delete_file(this.files, 0);
console.log('Files:', this.files);
});
function delete_file(filelist, i)
{
let arr = new Array(...filelist);
arr.splice(i, 1);
return array_to_filelist(arr);
}
function array_to_filelist (arr)
{
let b = new ClipboardEvent('').clipboardData || new DataTransfer();
for (let i = 0, len = arr.length; i < len; i++)
{
b.items.add(arr[i]);
}
return b.files;
}
<input type="file" multiple>
推荐阅读
- firebase - 如何在 Recycler View 中实现多选,但为 firebase 数据库项目创建的回收器适配器来自 Recyler 上的服务器
- excel - 当我在 Excel 2010 中刷新我的数据透视表时,条件格式在除标题单元格之外的所有单元格中消失
- javascript - 当我单击使用 Tampermonkey 添加到电子邮件的按钮时,如何阻止 gmail 打开电子邮件?
- gtk - 样式化 Gtk.Label 对象
- r - 如何在R中添加分类变量时组合多列
- android - 更改 nativescript android api 版本
- python - Collections.counter() 计算字母而不是单词
- arrays - 为什么动态数组包含 null 而不是实际的字符串
- javascript - 在 windows.performance.timing 中的什么时候,浏览器加载微调器会变成蓝色并顺时针方向旋转
- r - 简化 R 中的 dplyr 代码以选择数据集中的最小值