Как вы разрешаете загрузку нескольких файлов во внутренней интрасети Windows-аутентификации? - PullRequest
3 голосов
/ 08 сентября 2008

У меня есть пара решений, но ни одно из них не работает идеально.

Платформа

  1. ASP.NET / VB.NET / .NET 2.0
  2. IIS 6
  3. IE6 (в основном), с некоторыми IE7; Firefox не нужен, но полезен

Разрешенные сторонние опции

  1. Flash
  2. ActiveX (хотел бы избежать)
  3. Java (хотел бы избежать)

Текущие попытки

Стиль Gmail : Вы можете использовать javascript для добавления новых элементов загрузки (тип ввода = «файл»), а затем загрузить их все сразу, одним нажатием кнопки. Это работает, но все еще требует много кликов. (Я смог использовать невидимый элемент управления ActiveX для обнаружения таких вещей, как размер файла, что было бы полезно.)

Flash Uploader : я обнаружил пару элементов управления Flash Upload, которые используют флэш-файл 1x1 для работы в качестве загрузчика, который можно вызвать с помощью javascript. (Один из таких элементов управления FancyUpload , другой - Dojo's Multiple File Uploader , еще один - darick_c в CodeProject .) Это взволновало меня, но я быстро запустил на два вопроса:

  1. Flash 10 нарушит функциональность, используемую для вызова диалогового окна загрузки нескольких файлов. Обходной путь должен использовать прозрачную рамку вспышки, или просто использовать кнопку вспышки, чтобы вызвать диалоговое окно. Это не огромная сделка.
  2. Встроенная проверка подлинности Windows, используемая в нашей интрасети, не используется, когда файл Flash пытается загрузить файлы, запрашивая у пользователя учетные данные. Обходной путь для этого состоит в том, чтобы использовать сеансы без файлов cookie, что было бы кошмаром для нашего проекта по ряду других причин.

Java Uploader : я заметил несколько многофайловых загрузчиков на основе Java, но большинство из них стоят денег. Если бы я нашел тот, который работал действительно хорошо, я мог бы договориться о его покупке. Я бы просто не хотел. Мне также не нравится внешний вид большинства из них. Мне понравился FancyUpload, потому что он взаимодействовал с html / javascript, так что я мог легко стилизовать и управлять им любым удобным для меня способом.

ActiveX Uploader : я нашел решение ActiveX . Похоже, что ActiveX будет работать. Я бы просто написал свой вместо того, чтобы покупать тот. Думаю, это будет моим последним средством.

Разрешение

Я бы хотел использовать что-то вроде FancyUpload. Если бы я мог как-то получить запрос на ввод учетных данных, это было бы идеально. Но, судя по моим исследованиям, единственный реальный обходной путь - сеансы без печенья, чего я просто не могу сделать.

Итак, вопрос в следующем: есть ли способ решить проблемы, представленные выше, ИЛИ есть ли другое решение, которое я не перечислил, для достижения той же цели?

Ответы [ 5 ]

2 голосов
/ 16 сентября 2008

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

1 голос
/ 08 января 2009

Наша компания использует ajaxuploader.com, который поддерживает эту функцию.

1 голос
/ 09 сентября 2008

Вы также можете попробовать SWFUpload - он будет соответствовать вашей категории Flash Uploader.

0 голосов
/ 27 октября 2008

@davidinbcn.myopenid.co: Вот как я решил эту проблему. Но, чтобы дать более подробный ответ, я публикую здесь свое решение.

Решение!

Создайте два веб-приложения или веб-сайта или что-то еще.

Приложение A - это простое веб-приложение. Цель этого приложения - получать загружаемые файлы и сохранять их в нужном месте. Установите это как разрешенный анонимный доступ. Затем создайте одну страницу ASPX, которая принимает опубликованные файлы и сохраняет их в заданном месте. (Я делаю это в интрасети. Интернет-сайты могут подвергать себя проблемам безопасности, выполняя это. Примите дополнительные меры предосторожности, если это так.) Код этой страницы будет выглядеть примерно так:

Dim uploads As HttpFileCollection = HttpContext.Current.Request.Files
If uploads.Count > 0 Then
    UploadFiles(uploads)
Else
    result = "error"
    err = "File Not Uploaded"
End If

Приложение B - это ваш основной сайт, который позволяет загружать файлы. Установите это как аутентифицированное веб-приложение, которое не разрешает анонимный доступ. Затем поместите FancyUpload (или аналогичное решение) на страницу на этом сайте. Настройте его для публикации своих файлов на странице ASPX для загрузки приложения А.

0 голосов
/ 16 сентября 2008

В Internet Explorer FileReference.upload (флэш-загрузка) будет также отправлять файлы cookie.

Это поведение прерывается только при работе в других браузерах.

...