Как разрешить загрузку нескольких файлов во внутренней интрасети с проверкой подлинности Windows?

StackOverflow https://stackoverflow.com/questions/50315

Вопрос

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

Платформа

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

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

  1. Вспышка
  2. ActiveX (хотелось бы избежать)
  3. Java (хотелось бы избежать)

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

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

Загрузчик Flash-файлов:Я обнаружил пару элементов управления загрузкой Flash, которые используют flash-файл размером 1x1 в качестве средства загрузки, вызываемого javascript.(Одним из таких элементов управления является Модная загрузка, другой - это Устройство для загрузки нескольких файлов Dojo, еще один - это один по darick_c в CodeProject.) Это взволновало меня, но я быстро столкнулся с двумя проблемами:

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

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

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

Разрешение

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

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

Это было полезно?

Решение 5

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

Решение!

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

Приложение А это простое веб-приложение.Цель этого приложения - получать загруженные файлы и сохранять их в нужном месте.Настройте это как разрешенный анонимный доступ.Затем создайте единую 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

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

Другие советы

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

Ты мог бы попробовать SWFUpload Загрузить также - это вписалось бы в вашу "категорию" загрузчика Flash.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top