У меня есть несколько решений, но ни одно из них не работает идеально.
Платформа
- ASP.NET/ВБ.NET/.NET 2.0
- ИИС 6
- IE6 (в основном), с некоторым количеством IE7; Firefox не нужен, но полезен
Разрешенные сторонние параметры
- Вспышка
- ActiveX (хотелось бы избежать)
- Java (хотелось бы избежать)
Текущие попытки
Стиль Gmail. Вы можете использовать JavaScript для добавления новых элементов загрузки (input type='file'), а затем загружать их все сразу одним нажатием кнопки. Это работает, но по-прежнему требует много кликов. (Я смог использовать невидимый элемент управления ActiveX для определения таких вещей, как размер файла, что было бы полезно.)
Flash Uploader. Я обнаружил пару элементов управления Flash Upload, которые используют флэш-файл 1 x 1 в качестве загрузчика, вызываемого javascript. (Одним из таких элементов управления является FancyUpload, другим — Загрузчик нескольких файлов Dojo, еще один — от darick_c в CodeProject.) Меня это взволновало, но я быстро столкнулся с двумя проблемами:
- Flash 10 нарушит функциональность, которая используется для вызова диалогового окна загрузки нескольких файлов. Обходной путь — использовать прозрачную флеш-рамку или просто использовать флеш-кнопку для вызова диалогового окна. Это не так уж важно.
- Встроенная проверка подлинности Windows, используемая в нашей интрасети, не используется, когда файл Flash пытается загрузить файлы, запрашивая у пользователя учетные данные. Обходным путем для этого является использование сеансов без файлов cookie, что было бы кошмаром для нашего проекта по нескольким другим причинам.
Загрузчик Java. Я заметил несколько загрузчиков нескольких файлов на основе Java, но большинство из них стоят денег. Если бы я нашел тот, который работал действительно хорошо, я мог бы договориться о его покупке. Я бы не хотел. Мне также не нравится внешний вид большинства из них. Мне понравился FancyUpload, потому что он взаимодействовал с html/javascript, так что я мог легко стилизовать его и управлять им так, как захочу.
Загрузчик ActiveX: я также нашел решение ActiveX. Похоже, что ActiveX будет работать. Я бы просто написал свой собственный вместо того, чтобы покупать этот. Думаю, это будет мой последний шанс.
Разрешение
Я хотел бы иметь возможность использовать что-то вроде FancyUpload. Если бы я мог каким-то образом получить приглашение для учетных данных, это было бы идеально. Но из моих исследований следует, что единственным реальным обходным путем являются сеансы без файлов cookie, чего я просто не могу сделать.
Итак, вопрос: есть ли способ решить проблемы, представленные выше, ИЛИ есть ли другое решение, которое я не перечислил, которое достигает той же цели?