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