¿Cómo se permite la carga de múltiples archivos en una intranet interna de autenticación de Windows?

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

Pregunta

Tengo un par de soluciones, pero ninguna funciona perfectamente.

Plataforma

  1. ASP.NET/VB.NET/.NET 2.0
  2. IIS 6
  3. IE6 (principalmente), con algo de IE7;Firefox no es necesario, pero sí útil.

Opciones de terceros permitidas

  1. Destello
  2. ActiveX (me gustaría evitarlo)
  3. Java (me gustaría evitarlo)

Intentos actuales

Estilo de Gmail:Puede usar javascript para agregar nuevos elementos de carga (tipo de entrada = 'archivo') y luego cargarlos todos a la vez con solo hacer clic en un botón.Esto funciona, pero aún requiere muchos clics.(Pude usar un control ActiveX invisible para detectar cosas como el tamaño del archivo, lo cual sería útil).

Cargador flash:Descubrí un par de controles de carga Flash que utilizan un archivo flash 1x1 para actuar como cargador, invocable mediante JavaScript.(Uno de esos controles es FancyUpload, otro es Cargador de archivos múltiples de Dojo, otro más es uno por darick_c en CodeProject.) Esto me entusiasmó, pero rápidamente me encontré con dos problemas:

  1. Flash 10 interrumpirá la funcionalidad que se utiliza para llamar al cuadro de diálogo de carga de múltiples archivos.La solución es utilizar un marco flash transparente o simplemente utilizar un botón flash para abrir el cuadro de diálogo.Eso no es gran cosa.
  2. La autenticación de Windows integrada utilizada en nuestra intranet no se utiliza cuando el archivo Flash intenta cargar los archivos, solicitando al usuario las credenciales.La solución para esto es utilizar sesiones sin cookies, lo que sería una pesadilla para nuestro proyecto por varias otras razones.

Cargador de Java:Noté varios cargadores de archivos múltiples basados ​​en Java, pero la mayoría parece costar dinero.Si encontrara uno que funcionara realmente bien, podría arreglar su compra.Preferiría no hacerlo.Tampoco me gusta el aspecto de la mayoría de ellos.Me gustó FancyUpload porque interactuaba con html/javascript para que pudiera diseñarlo y administrarlo fácilmente como quisiera.

Cargador ActiveX:encontré una solución ActiveX también.Parece que ActiveX funcionará.Simplemente escribiría el mío en lugar de comprarlo.Creo que este será mi último recurso.

Resolución

Me encantaría poder utilizar algo como FancyUpload.Si pudiera pasar por el mensaje de credenciales de alguna manera, sería perfecto.Pero, según mi investigación, parece que la única solución real son las sesiones sin cookies, lo cual simplemente no puedo hacer.

Entonces, la pregunta es:¿Existe alguna manera de resolver los problemas presentados anteriormente O hay una solución diferente que no he enumerado y que logra el mismo objetivo?

¿Fue útil?

Solución 5

@davidinbcn.myopenid.co:Básicamente así es como resolví este problema.Pero, en un esfuerzo por brindar una respuesta más detallada, publico mi solución aquí.

¡La solución!

Crea dos aplicaciones web, o sitios web, o lo que sea.

Aplicación A es una aplicación web sencilla.El propósito de esta aplicación es recibir archivos cargados y guardarlos en el lugar adecuado.Configure esto como un acceso anónimo permitido.Luego cree una única página ASPX que acepte archivos publicados y los guarde en una ubicación determinada.(Estoy haciendo esto en una intranet.Los sitios de Internet pueden estar exponiéndose a problemas de seguridad al hacer esto.Tome precauciones adicionales si ese es el caso). El código detrás de esta página se vería así:

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

Aplicación B es su sitio principal que permitirá la carga de archivos.Configúrelo como una aplicación web autenticada que no permita el acceso anónimo.Luego, coloque el FancyUpload (o solución similar) en una página de este sitio.Configúrelo para publicar sus archivos en la página ASPX de carga de la Aplicación A.

Otros consejos

No creo que haya ninguna solución para la autenticación integrada de Windows.Lo que podría hacer es guardar los archivos en una carpeta genérica desprotegida y, en el caso de swfupload, usar un controlador para mover el archivo cuando esté completamente cargado.

Tu podrías intentar SWFSubir Además, encajaría en la "categoría" de Flash Uploader.

Nuestra empresa utiliza ajaxuploader.com, que admite esta función.

En Internet Explorer, FileReference.upload (carga flash) voluntad enviar cookies también.

Este comportamiento solo se interrumpe cuando se ejecuta en otros navegadores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top