注意:
下面的答案和评论反映了2009年遗留浏览器的状态.现在,您可以在2017年使用JavaScript和dataTransfer或FileList对象实际动态/编程地设置文件输入元素的值.
有关详细信息和演示,请参阅此问题中的答案:
如何以编程方式设置文件输入值(即:拖放文件时)?
我该如何设置它的值?
<input type="file" />
Run Code Online (Sandbox Code Playgroud) 可以将元素的.files属性设置为例如来自不同的元素属性或属性.请参阅Make .files settable#2866,将文件上传到HTML表单并提交之间会发生什么?.<input type="file">FileList<input type="file">.filesDataTransfer.files
FileList对象有一个Symbol.iterator属性,我们可以使用它来设置一个File可迭代的对象,但是.files .length仍然设置为0并传递一个<form>有<input type="file">用于.files使用上述方法设置的集合,产生一个设置为的File对象..size0
如何设置Fileat FileList和set设置.length的FileList文件数,文件在FormData()object 设置的位置?
const input = document.createElement("input");
const form = document.createElement("form");
const [...data] = [
new File(["a"], "a.txt")
, new File(["b"], "b.txt")
];
input.type = "file";
input.name = "files";
input.multiple = true;
// …Run Code Online (Sandbox Code Playgroud)我试图删除或以某种方式使多个文件的单个输入中的单个值无效.假设我们有四个值......
<input id="input" multiple="multiple" type="file" />
input = document.getElementById('input');
// So our four files are:
input.files[0];
input.files[1];
input.files[2];
input.files[3];
Run Code Online (Sandbox Code Playgroud)
如果我想从阵列中删除[1]而不破坏其他人,我可以这样做吗?我已经尝试过拼接,将值设置为NULL,更改名称等等.这些东西似乎都没有用(当元素保持readonly = false时)Jquery的remove函数删除整个元素,这样就不起作用了.任何帮助是极大的赞赏!
我有这个DOM:
var id = 0;
$('input:file#upload')[0].files[ id ]
Run Code Online (Sandbox Code Playgroud)
这是第0个索引的第一个文件.文件属性已列出,所有工作,但......
我们如何[object FileList]使用JavaScript 从DOM中删除项目?
假设我有一个允许用户上传多个图像的表单,如果他们不想上传该特定照片,则附加一个选项以删除它们.
是否可以从他们删除的文件对象的文件对象中删除该值(例如,不想上传)?
HTML:
<input accept="image/*" class="" id="my_pics" multiple="multiple" name="pics" required="true" type="file" />
Run Code Online (Sandbox Code Playgroud)
JS:
var files = document.getElementById('my_pics').files;
files.splice(1,2)
//TypeError: Object #<FileList> has no method 'splice'
delete files.item(2)
// true, but nothing happens with "2"
delete files[2]
// false, result is the same
Run Code Online (Sandbox Code Playgroud)
我有一个包含多个文件的表单,我需要在服务器上只在一个输入中上传有限数量的图像(例如,5),但我的代码不起作用.
怎么解决?谢谢.
我正在尝试创建一个表单,其中可以有多个文件上传部分,用户可以在其中上传多个文件。
这部分是相当简单的。我的问题来自允许用户在上传之前从上传列表中“删除”文件。
我创建了一个小提琴来说明
http://jsfiddle.net/alexjamesbrown/o62srbew/
我有一排简单的内容 <input type="file"
<div class="row files" id="files1">
<h2>Files 1</h2>
<span class="btn btn-default btn-file">
Browse <input type="file" name="files1" multiple />
</span>
<br />
<ul class="fileList"></ul>
</div>
Run Code Online (Sandbox Code Playgroud)
然后,到目前为止,我已经创建了一个jquery插件,因此它可以重复使用:
$.fn.fileUploader = function (filesToUpload) {
this.closest(".files").change(function (evt) {
for (var i = 0; i < evt.target.files.length; i++) {
filesToUpload.push(evt.target.files[i]);
};
var output = [];
for (var i = 0, f; f = evt.target.files[i]; i++) {
var removeLink = "<a href=\"#\" data-fileid=\"" + i + "\">Remove</a>";
output.push("<li><strong>", escape(f.name), "</strong> - ", …Run Code Online (Sandbox Code Playgroud)