Добавление незаметного индикатора выполнения к олдскульным загрузкам файла

Можно проверить, выполняете ли Вы версию 4.0.4 Jboss или версию 4.2.2. Вы могли бы получить эту ошибку, когда Вы установили Jboss 4.2.2, но настроили Jboss 4.0.4 в Eclipse.

19
задан Pekka supports GoFundMonica 10 February 2010 в 17:28
поделиться

6 ответов

Мы реализовали это очень просто, установив расширение PECL pecl-uploadprogress и добавив простой AJAX callback в формы:

Генерируем ключ загрузки:

$upload_id = genUploadKey();
function genUploadKey ($length = 11) {
  $charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  for ($i=0; $i < $length; $i++)
    $key .= $charset[(mt_rand(0,(strlen($charset)-1)))];
  return $key;
}

Создаем обработчик AJAX callback (например. uploadprogress.php):

extract($_REQUEST);

// servlet that handles uploadprogress requests:
if ($upload_id) {
  $data = uploadprogress_get_info($upload_id);
  if (!$data)
    $data['error'] = 'upload id not found';
  else {
    $avg_kb = $data['speed_average'] / 1024;
    if ($avg_kb<100)
      $avg_kb = round($avg_kb,1);
    else if ($avg_kb<10)
      $avg_kb = round($avg_kb,2);
    else $avg_kb = round($avg_kb);

    // two custom server calculations added to return data object:
    $data['kb_average'] = $avg_kb;
    $data['kb_uploaded'] = round($data['bytes_uploaded'] /1024);
  }

  echo json_encode($data);
  exit;
}

// display on completion of upload:
if ($UPLOAD_IDENTIFIER) {
...

Скачайте jQuery и библиотеку jQuery.uploadprogress (которая также включает в себя приведенный выше фрагмент) и интегрируйте в вашу форму:

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.uploadprogress.0.3.js"></script>
<script type="text/javascript">
jQuery(function () {
    // apply uploadProgress plugin to form element
    // with debug mode and array of data fields to publish to readout:
    jQuery('#upload_form').uploadProgress({
        progressURL:'uploadprogress.php',
        displayFields : ['kb_uploaded','kb_average','est_sec'],
        start: function() {
            $('.upload-progress').show();
        },
    success: function() {
            $('.upload-progress').hide();
            jQuery(this).get(0).reset();
        }
    });
});
</script>

Добавьте это в вашу форму загрузки:

<input name="UPLOAD_IDENTIFIER" type="hidden" value="$upload_id" />

Это должно помочь. Это извлечено из нашей базы кода и может не работать из коробки. Но это должно подсказать вам идею.

3
ответ дан 30 November 2019 в 05:12
поделиться

Удовлетворяет ли метод, используемый в Uploadify (плагин jQuery), вашим потребностям? Демо

1
ответ дан 30 November 2019 в 05:12
поделиться

jquploader использует информацию внутри формы, такую ​​как значение атрибута действия как сценарий загрузки. Но я не обновлял его некоторое время, и в нем отсутствуют все сценарии поясов и свистков, такие как uploadify (который, кстати, отличный сценарий). Посмотрим, может ли это быть основой для настройки.

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

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

3
ответ дан 30 November 2019 в 05:12
поделиться

Спасибо Шону, что заставил меня осознать полный идиотизм этого вопроса. Позвольте мне быть примером для других, чтобы не прыгать в завершающий поезд.

Шон указал, что «copy-paste можно сделать с помощью встроенной функциональности cmd.exe», что заставляет меня признать, что, да, абсолютно duh, когда вы запускаете приложение командной строки в Windows он уже имеет эту функциональность доступна.

Я ошибся, перескочив к выводам, потому что я делал все свое первоначальное тестирование с выполнением DEBUG через IDE, и vshost не дает вам эту функциональность.

Быстрый «Запуск без отладки» показал мою недальновидность.

-121--1233957-

Я использую модуль «Искра» и модуль просмотра по умолчанию. Здесь не так много дел. Необходимо зарегистрировать SparkViewFactory, позвонив по телефону ViewEngines.Engines.Add () , и Spark обработает файлы * .spark, а обработчик представлений по умолчанию (WebFormViewEngine) будет обрабатывать старые представления. Не удаляйте обработчик веб-форм из списка ViewEngines.Engine.

-121--3894425-

Если вы используете PHP 5.2 и увеличиваете размер файла , руководство по загрузке компании IBM поможет вам.

В руководстве по отправке нескольких файлов используется jQuery + AJAX Upload ... Он использует $ _ FILES на стороне сервера и преобразует специальный < div > на стороне клиента, чтобы создать < form >. Думаю, вы можете подправить его, чтобы соответствовать вашим потребностям.

Если настройка последней слишком сложна, Uber-Uploader на SourceForge является другой опцией.

Существуют десятки проектов с открытым исходным кодом, охватывающих эту тему. К сожалению, это не является чем-то тривиальным для прозрачной реализации (по крайней мере, в путь вы хотите - иначе мы бы увидели это в старые добрые дни Netscape).

На яркой стороне, HTML5 облегчит это, как вы можете видеть в этой демонстрации и этой .

Надеюсь, это поможет и удача с вашей интеграцией.

5
ответ дан 30 November 2019 в 05:12
поделиться

Как забавно, я только что видел блог Саймона Уиллисона о Plupload, который является библиотекой JavaScript, которая, как я думаю, делает прогресс-бары загрузки файлов (среди прочего).

Она использует Flash, Silverlight, или что там есть, но я думаю, что абстрагирует все это от вас, так что вы все равно загружаете файл с помощью обычной HTML-формы.

0
ответ дан 30 November 2019 в 05:12
поделиться

Вам нужно будет проверить размер части файла, который уже находится на сервере, а затем получить его на клиенте через Ajax, где вы можете нарисовать индикатор выполнения. (Не забудьте проверить размер данных отверстия перед тем, как рассчитать процентное соотношение ;-) )

0
ответ дан 30 November 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: