2011-12-17 4 views
2

У меня есть форма, к которой могут быть прикреплены один или несколько (больших) файлов. Я хочу добиться:Лучшая стратегия для загрузки нескольких файлов

  • файла прогресс загрузки должен быть показан пользователю

  • Процесс загрузки может быть прерван пользователем в любое время

  • Если ошибка происходит с другие данные о форме после ее отправки, файлы не должны запрашиваться повторно; Другими словами, файлы загружаются только один раз, даже если форма может быть повторно представлено несколько раз

  • Если файлы и данные формы размещаются отдельно и независимо друг от друга с помощью Ajax, загруженные, но неиспользуемые файлы должны быть очищены автоматически

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

  • Требования к браузеру: последние версии Safari, Chrome и Fire Fox; IE9 желательно

  • Сторона сервера: пожалуйста, не предлагайте сторонние рамки; решение должно быть настолько универсальным, что позволит никому реализовать его в своем любимом языке - Python, Ruby, PHP, Perl и т.д. (и, предположительно, JavaScript)

Учитывая вышеизложенное, что некоторые советы и трюки и рекомендации по реализации этой функции?

+0

Итак, вы хотите, чтобы ваши пользователи могли выбирать несколько файлов в окне выбора файла, не так ли? –

+0

@Julien Bourdon: этого не требуется, хотя я знаю, что это возможно в большинстве современных браузеров. – mojuba

ответ

1

swfupload является довольно устрашающим. Хорошо документировано и работает очень хорошо. http://swfupload.org/

+0

Это ответ, который я собираюсь предложить. По собственному опыту это единственное надежное решение. –

+0

Насколько я понимаю, он не охватывает серверную сторону вещей. – mojuba

+0

Правда, но это не накладывает никаких требований или ограничений на стороне сервера, так как я читаю ваш последний пуля. Вы можете использовать все, что захотите. – mkoistinen

0

Если ваши пользователи используют последние версии браузеров, вы можете использовать доступ к файлам HTML5 с JavaScript.

Вы можете посмотреть здесь для запуска http://www.html5rocks.com/en/tutorials/file/dndfiles/

Также вы посмотрите на мой плагин для рубина на рельсах здесь может (нет Docs пока нет, но JS код довольно прост) http://github.com/Ximik/simple_attachments

+0

Я видел это раньше, это хороший учебник, но он не говорит о стратегиях на стороне сервера, например. где и как хранить (и очищать) файлы, как привязывать их к экземпляру формы в случае множественных повторных подачек и так далее. – mojuba

+0

Тогда действительно посмотрите на мой код, если вы используете рельсы. Большая часть этого делается там или будет сделана через несколько дней. – Ximik

Смежные вопросы