Проблема с загрузкой формы Firefox - PullRequest
3 голосов
/ 27 февраля 2010

Я создал скрипт загрузки в php, который берет файл, изменяет его размер и создает обрезанный квадратный эскиз. Сам сценарий, кажется, работает нормально.

Однако, когда я пытался загрузить изображение через Firefox, при нажатии кнопки «Отправить» браузер отображает анимацию загрузки, но он никогда не вызывает сценарий, он просто остается на текущей странице. Если изображение не загружено, скрипт может быть найден и запущен.

Я пробовал в сафари, и у меня не возникает та же проблема, я могу загрузить изображение из формы, оно обработает его и выведет нужную страницу.

Мне надоело просто вызывать базовый скрипт из формы, он просто печатает $ _POST и $ _FILES, и я получаю тот же результат, если изображение присутствует, оно не попадет в скрипт, если изображение отсутствует, работает нормально.

Мне просто интересно, кто-нибудь знает, что происходит?


= Обновление =

Хорошо, так что у меня все еще есть эта проблема, мне кажется, что я тогда выяснил, что ее вызывает, но потом я нахожу что-то, что полностью противоречит этому.

В данный момент я заметил, что могу успешно загрузить после очистки кеша Firefox, но я могу загрузить только одно изображение, затем, когда я пытаюсь загрузить другое, я не могу, он просто сбрасывает соединение после "Загрузка ..." немного.

Кроме того, я заметил, что могу несколько раз нажать Ctrl + F5 и выполнить еще одну загрузку.

Хотя есть способы обойти это, я не хочу иметь форму, которая требует от пользователей удалять куки или обновлять их каждый раз, когда им нужно загрузить. И, как я упоминал ранее, эта ошибка не возникает в IE / Opera / Safari / Chrome.

Кажется, что Firefox что-то хранит, я не уверен, что. Будем благодарны за любую помощь.

Если это поможет, вот код, который я использую.

Форма HTML

<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
<label for="file">Choose a file to upload</label>
<input id="file" name="file" type="file" /><br />
<input type="submit" value="Upload File" name="submit" />

И PHP:

if (isset($_POST['submit'])) {

  echo "Processing...<br/>";

  if (isset($_FILES['file']['name'])) {
      $file_array = $_FILES['file'];

      echo "Uploading...";
      upload File($file_array);
      echo "...Done";

  }
}

Эхо для меня, чтобы увидеть, что происходит. Если ни один из них на самом деле не выводится. Поэтому по какой-то причине форма не отправляется. Вот почему это не доходит до сценария. Я не знаю почему, хотя. У меня нет ошибок CSS или JavaScript.

== Обновление ==

Ладно, я пробую еще кое-что, но все еще не повезло, HTML, CSS и JavaScript все действительны. Я сделал сброс IIS, я воссоздал свой профиль Firefox. И все же теперь удачи.

Я снова тестировал его, и на этот раз я остановил его в середине загрузки (до сброса соединения), а затем попытался перейти на другую страницу веб-сайта, и замораживание продолжалось, оно все равно говорило Загружается ... »и« В ожидании localhost ... ». Не совсем уверен, что с этим делать, у меня есть какие-то настройки? Но тогда почему это не влияет на другие браузеры?

== Обновление ==

Как я упоминал ниже, кажется, что AVG Linkscanner / Active surf shield, кажется, вызывает эту проблему, и есть много сообщений о других, имеющих подобные проблемы с ним. Я обновился с AVG Free v9.0.733 до v9.0.790, и у меня ЕСТЬ все та же проблема. Я собираюсь просмотреть форумы поддержки AVG и, возможно, опубликовать что-то там, поскольку это кажется проблемой AVG.

Если у кого-то есть что-то еще, пожалуйста, напишите ниже. Это высоко ценится:)

Ответы [ 7 ]

2 голосов
/ 01 марта 2010

Хорошо, я кое-что понимаю, вы можете подумать, что это просто глупая ошибка, но читайте дальше.

Если у меня нет тегов .. etc и просто есть ..

<form enctype="multipart/form-data" action="up.php" method="POST">
    <label for="file">Choose a file to upload</label>
    <input id="file" name="file" type="file" /><br />
    <input type="submit" value="Upload File" name="submit" />
</form>

Тогда я получаю эту проблему, где Firefox будет висеть, при отправке формы.

Если у меня есть правильные теги, такие как ..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 


<head>
<title></title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body >

    <form enctype="multipart/form-data" action="up.php" method="POST">
    <label for="file">Choose a file to upload</label>
    <input id="file" name="file" type="file" /><br />
    <input type="submit" value="Upload File" name="submit" />
    </form>

</body>

</html>

Тогда кажется, что это работает. Теперь это выглядит просто, но я создаю свои страницы динамически, поэтому у меня есть только один файл, который содержит только код формы, который включается в страницу.

Насколько мне известно, наличие кода формы в отдельном файле не должно иметь никакого значения, поскольку все это вместе со стороны сервера.

0 голосов
/ 06 февраля 2011

Это не очень вам поможет, но у меня точно такая же проблема. Я даже переустанавливал FF, очищал кеш, урезал код (до очень простой формы без проверки и с полным удалением PHP - как при загрузке, так и после отправки). У меня есть проблема в FF 3.6.13, и я протестировал текущие версии Safari (win), Chrome, Opera и IE, где код работает отлично. Мой код проверяется как строгий XHTML, и все вышеизложенные предложения уже есть ... более того, я использую свой локальный (на том же компьютере) веб-сайт.

MANY спасибо, что указали мне на сканер AVG Link ... отключив его, я решу проблему, но я все еще думаю, что FF имеет ошибку, поскольку "все" другие браузеры хорошо работают со сканером AVG Link на.

0 голосов
/ 15 марта 2010

Может быть, что-то не так с if (isset($_POST['submit'])) { и переменная $_POST['submit'] не включена в FireFox?

<code><pre>
    <?PHP
        print_r($_POST);
    ?>
0 голосов
/ 09 марта 2010

Из спецификации xhtml 1.0

HTML 4 определил атрибут имени для элементы а, апплет, форма, рамка, iframe, img и map. HTML 4 также ввел атрибут id. Оба эти атрибуты предназначены для используется в качестве идентификатора фрагмента.

В XML идентификаторы фрагментов имеют введите идентификатор, и может быть только один атрибут типа ID на элемент. Следовательно, в XHTML 1.0 атрибут id определен как тип Я БЫ. Чтобы убедиться, что XHTML 1.0 документы хорошо структурированы XML документы, документы XHTML 1.0 ДОЛЖНЫ используйте атрибут id при определении идентификаторы фрагментов на элементах перечисленные выше.

Возможно, добавление id к form может решить вашу проблему.

0 голосов
/ 08 марта 2010

Затем, когда вы щелкаете правой кнопкой мыши в FF и просматриваете исходный код, он должен выглядеть точно так же, как в вашем коде выше (ниже «Если у меня есть правильные теги, такие как ..»).

0 голосов
/ 28 февраля 2010

На всякий случай, если вы используете последнюю версию FF 3.6, у меня возникла точно такая же проблема. Кажется, любая форма, загружающая большой файл (достаточно 1 МБ), блокирует загрузку FF.На IE7 / Safari / Opera это работает.

0 голосов
/ 27 февраля 2010

Иногда относительные пути воспринимаются разными браузерами по-разному, хотя на самом деле это не так, но попробуйте указать текущий каталог , указав путь перед ./, например:

$target_path = "./public/photos/";

Остальная часть кода выглядит хорошо для меня.

...