【发布时间】:2015-02-13 01:10:27
【问题描述】:
我有以下表格:
<form>
...
<input type="file" multiple="multiple" id="images" />
<a id="add">Add</a>
...
<input type="submit" value="Submit" />
</form>
添加元素的点击事件然后像这样连接起来:
var images = [];
$("#add").click(function() {
var files = $("#images")[0].files;
for (var i = 0; i < files.length; i++) {
images.push[files[i];
}
$("#images").val("");
});
这允许我添加来自多个位置的图像。现在我需要将文件发送回服务器。我发现了以下问题:
Passing path to uploaded file from HTML5 drag & drop to input field
这似乎是相似的。因此,我在提交表单时使用了以下内容来连接事件:
var form = $("form");
form.submit(function() {
for (var i = 0; i < images.length; i++) {
var reader = new FileReader();
reader.onload = function(e) {
$("<input>").attr({ type: "hidden", name: "images[]" }).val(e.target.result).appendTo(form);
};
reader.readAsDataURL(images[i]);
}
});
最后在服务器上我有以下代码:
print_r($_POST);
print_r($_FILES);
但是,这两个集合都不包含提交图像的项目。我想知道我做错了什么?谢谢
【问题讨论】:
-
您是否有多个具有相同 id 的商品?如果是这样,你需要改变它。 HTML 页面中不允许有重复的 ID。
-
不,我只有一个名为 images 的元素。我也用不同的名称对此进行了测试,但似乎没有任何效果。
-
控制台有错误吗?例如这条线
images.push[files[i];不好。 -
看起来您实际上并未使用正在创建的那些 FileReader 对象读取任何文件,因此将输入元素附加到表单的 onload 事件实际上可能不会触发。
-
不,没有 javascript 错误。我还使用开发人员工具逐步完成了它,并为表单提交时添加的每个图像正确执行了 onload 事件。
标签: javascript php jquery html