Загрузка нескольких файлов. cloneNode полей ввода с IE - PullRequest
2 голосов
/ 17 января 2010

Я хочу, чтобы форма загружала некоторые файлы на сервер, но я хочу, чтобы она была прозрачной для пользователя. У меня есть тег ввода вне формы, который клонируется в форму с помощью cloneNode () [Javascript] каждый раз, когда пользователь меняет свое значение. Имя входного тега - «files []». Mozilla Firefox клонирует ввод правильно, но IE не копирует его значение, а в IE входы внутри формы пусты. Как правильно скопировать поле ввода с помощью IE?

кусок кода:

В функции Javascript, вызываемой при input.onChange:

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);
}

Спасибо.

1 Ответ

2 голосов
/ 17 января 2010

Редактировать : Как ни странно, тот же вопрос был задан только неделю назад на SO. Комментарии в принятом ответе дают хорошее объяснение, почему этого нельзя сделать.

Я почти уверен, что это не работает из-за ограничений безопасности, и это правильно.

По моему мнению, IE обычно имеет тенденцию быть более строгим с такими вещами, возможно, потому что они были так сильно сожжены (и имели такие зияющие дыры в безопасности) в прошлом.

Вы можете утверждать, что пользователь установил значение, и копирование элемента, таким образом, должно быть в порядке. Но такого рода вещи являются тем, что являются задними дверями для некоторых махинаций между сайтами и фреймами (которые работают, когда фрейм A находится в этом домене, фрейм B в этом, пользователь - мужчина и моложе тридцати, а Луна - в Деве) сделаны, поэтому я понимаю, что это запрещено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...