如何在内部Windows身份验证Intranet上允许多个文件上载?
我有几个解决方案,但没有一个能够完美工作。如何在内部Windows身份验证Intranet上允许多个文件上载?
平台
- ASP.NET/VB.NET/.NET 2.0
- IIS 6
- IE6(主要),具有一定的IE7;火狐没有必要的,但有用的
允许第三方选项
- 闪存
- 的ActiveX(想避免)
- 的Java(想避免)
当前尝试次数
Gmail风格:您可以使用JavaScript添加新的上传元素(输入类型='文件'),然后点击一个按钮一次全部上传。这可行,但仍需要大量的点击。 (我可以用一种无形的ActiveX控件检测之类的文件大小,这将是有益的。)
Flash上传:我发现一对夫妇使用一个1x1的Flash文件充当Flash上传控件上传者,可以通过javascript调用。 (一个这样的控制是FancyUpload,另一个是Dojo's Multiple File Uploader,又是一个由darick_c at CodeProject)。这些让我兴奋,但我很快就遇到了两个问题:
- 闪存10将打破被用来调用多个功能文件上传对话框。解决方法是使用透明的闪光灯框,或者使用闪光灯按钮调用对话框。这不是什么大问题。
- 当Flash文件尝试上载文件时,不会使用我们Intranet上使用的集成Windows身份验证,这会提示用户输入凭据。解决方法是使用无Cookie会话,由于其他原因,这对我们的项目来说是一场噩梦。
的Java上传:我发现了几个基于Java的多文件上传,但大多数似乎花钱。如果我发现一个工作得很好,我可以安排购买它。我只是不想。我也不喜欢它们中的大多数。我喜欢FancyUpload,因为它与html/javascript交互,这样我就可以轻松地按照我想要的方式进行样式和管理。
ActiveX上传器:我发现an ActiveX solution以及。看来,ActiveX将工作。我只会写我自己的,而不是购买那个。我认为这将是我的最后一招。
分辨率
我很想能够使用像FancyUpload。如果我能以某种方式获得凭证提示,那将是完美的。但是,从我的研究中看来,唯一真正的解决方法是无Cookie会话,这是我无法做到的。
所以,问题是:有没有办法解决上面提出的问题,还是有没有一个不同的解决方案,我没有列出来实现相同的目标?
@davidinbcn.myopenid.co:这基本上是我如何解决这个问题。但是,为了提供更详细的答案,我在这里发布我的解决方案。
解决方案!
创建两个Web应用程序或网站,或其他。
应用程序A是一个简单的Web应用程序。此应用程序的目的是接收文件上传并将其保存到适当的位置。将其设置为允许匿名访问。然后制作一个接受发布文件并将它们保存到指定位置的ASPX页面。背后(我在Intranet这样的互联网网站可能会通过这样自己暴露的安全问题要特别小心,如果是这样的话。)的代码,这个网页看起来是这样的:
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是您的主要网站,将允许文件上传。将其设置为不允许匿名访问的经过身份验证的Web应用程序。然后,将FancyUpload(或类似的解决方案)放置在此网站的页面上。配置它将其文件发布到应用程序A的上传ASPX页面。
在Internet Explorer中,FileReference.upload(flash上传)将也一起发送Cookie。
只有在其他浏览器中运行时,此行为才会中断。
我想我读了,但IE浏览器在我尝试时提示我输入凭据。 – EndangeredMassa 2008-09-16 14:50:51
我不认为有任何解决整合Windows身份验证的工作。你可能会做的是将文件保存到一个通用的不受保护的文件夹,并在swfupload的情况下,使用处理程序来移动该文件时,完全上传
我们公司使用支持此功能的ajaxuploader.com。
不错,但我相当肯定它与其他闪存解决方案有相同的缺陷。如果没有,请告诉我。 – EndangeredMassa 2008-09-08 21:46:50