Подтвердить что ты не робот

Загрузка HTTP с помощью виджета ресурсов

Я создаю службу загрузки на основе PHP для некоторых наших клиентов. Я использую SWFUpload, чтобы я мог просматривать ход файла по мере его загрузки. У меня это довольно много построено, но я столкнулся с одним последним вопросом, прежде чем мы можем опубликовать его для публики.

Многие (почти все) наши клиенты основаны на Mac и загружают наборы файлов, которые включают файлы InDesign, шрифты, файлы Illustrator и т.д. В большинстве случаев файлы изображений в порядке, но иногда (и всегда с типом 1), файл будет поврежден, потому что он потеряет ресурс ресурса.

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

Есть ли лучшие решения для сохранения этих ресурсных вилок? Конечно, я бы предпочел решение, которое является прямым javascript/php, но будет соглашаться на что-то, основанное на flash или (наименее предпочтительно) на основе java.

Мои единственные требования к новому решению:

  • Просмотр процесса загрузки
  • Пользователю не нужно вручную сжимать файлы.

Вот некоторая информация о моей системе

  • Сервер Ubuntu 10.10, на котором установлена ​​стандартная установка LAMP
  • PHP5
  • SWFUpload (самая последняя версия - wtv)
4b9b3361

Ответ 1

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

Вилка ресурсов: Вирус ресурсов - это конструкция операционной системы Mac OS, используемая для хранения структурированных данных в файле, наряду с неструктурированными данными, хранящимися в пределах данных fork. Витка ресурсов хранит информацию в определенной форме, такую ​​как значки, формы окон, определения меню и их содержимого, а также код приложения (машинный код).

Если это блокировщик для вас, возможно, вы выбрали неправильное поле для работы. Просто говоря, если вы столкнетесь с систематическими границами, вы не можете многое сделать. Даже если вы работаете для графических дизайнеров и пользователей Mac.

Для swfupload потребуется функция для работы с вилками. Для этого flash понадобится функция для работы с вилками. Для этого браузеру в конечном итоге понадобится функция для работы с вилками. И так далее.

Рядом с этой цепочкой остается еще один вопрос: как бороться с вилками? Поскольку загрузка только отображает один файл на кусок двоичных данных, как отобразить вилку? Добавить это? Добавить дополнительный файл?

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

Так как вы не можете предложить что-то пользователю, которого не существует, единственное, что вы можете сделать, это сделать ваше приложение более удобным для использования или удобным для пользователя. Например. путем предоставления правильных заметок в нужное время (например, когда пользователь выбирает файл типа 1 для загрузки, чтобы напомнить ему/ей, чтобы выбрать вилку). Общение с пользователем может помочь, но имейте в виду, что пользователю нужно говорить на языке, который он понимает.

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

Ответ 2

Вам не нужно использовать swfupload для отслеживания прогресса.

Вот несколько файлов, которые демонстрируют это: https://github.com/senica/Booger/tree/master/assets/js/jquery-upload

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

Это будет javascript/php-решение.