【发布时间】:2010-01-17 09:14:30
【问题描述】:
我想要一个表单将一些文件上传到服务器,但我希望它对用户是透明的。我在表单之外有一个输入标签,每次用户更改其值时,它都会使用 cloneNode() [Javascript] 克隆到表单中。输入标签的名称是“files[]”。 Mozilla Firefox 正确克隆输入,但 IE 不会复制其值,并且使用 IE,表单内的输入为空。如何使用 IE 正确复制输入字段?
一段代码:
在input.onChange时调用的Javascript函数:
InputCopy = InputParent.childNodes[i].cloneNode(true);
document.getElementById('divFromForm').appendChild(InputCopy);
HTML 输入标签:<input type="file" id="archivoAnadir" name="files[]" onChange="anadir(this.value)">
PHP 请求:
foreach ($_FILES["files"]["name"] as $key => $file) {
$query = "...";
mysql_query($consulta) or die("...");
if (!is_uploaded_file( $_FILES["files"]["tmp_name"][$key] )) die("...");
if (!move_uploaded_file($_FILES["files"]["tmp_name"][$key], "media/" . $file)) die ("..." . $file);
}
谢谢。
【问题讨论】:
-
你能把代码贴在这里吗?或者至少是相关部分。它使调试过程更容易:能够看到代码:]
-
实际上,如果实际上可以将
type=file的输入 包括 值复制到表单中(这似乎是您建议的,对于 firefox ),这将是一个相当大的安全风险。请向我们展示代码。 -
因为无法修改“值”,所以使用了cloneNode()和appendChild()。我认为这不是安全风险,因为我正在复制用户已更改的输入字段。我无法改变它。
标签: javascript html file-upload