我希望表单将一些文件上传到服务器,但我希望它对用户是透明的。我在表单外部有一个输入标记,每次用户更改其值时,都会使用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);
}
感谢。
答案 0 :(得分:2)
编辑:有趣的是,very same question仅在一周前就被问过。接受的答案中的评论很好地解释了为什么不能这样做。
由于安全限制,我很确定这不起作用,这是正确的。
根据我的看法,IE通常会对这样的东西更加严格,可能是因为他们过去曾经被严重烧伤(并且有如此大的安全漏洞)。
你可以说用户确实设置了值,因此复制元素应该没问题。但是这种东西是一些跨站点框架的后门 - 一些恶作剧(当框架A在这个领域时工作,框架B在那里,用户是男性和三十岁以下,月亮在处女座)由...构成,所以我觉得它被禁止是可以理解的。