如何在内部Windows身份验证Intranet上上传多个文件?

时间:2020-03-05 18:49:32  来源:igfitidea点击:

我有几个解决方案,但没有一个能很好地解决问题。

平台

  • ASP.NET/VB.NET/.NET 2.0
  • IIS 6
  • IE6(主要是)和一些IE7; Firefox不是必需的,但很有用

允许的第三方选项

  • 闪光
  • ActiveX(希望避免)
  • Java(希望避免)

目前的尝试

Gmail样式:我们可以使用javascript添加新的Upload元素(输入type ='file'),然后单击一下按钮一次将其全部上传。这可行,但是仍然需要大量的点击。 (我能够使用一个不可见的ActiveX控件来检测文件大小之类的东西,这将很有用。)

Flash Uploader:我发现了几个Flash Upload控件,这些控件使用1x1 Flash文件充当上传器,可通过javascript调用。 (一个这样的控件是FancyUpload,另一个是Dojo的" Multiple File Uploader",另一个是CodeProject的darick_c的控件。)这些让我很兴奋,但是我很快遇到了两个问题:

  • Flash 10将中断用于调用多文件上传对话框的功能。解决方法是使用透明闪光灯框,或者仅使用闪光灯按钮来调用对话框。没什么大不了的。
  • 当Flash文件尝试上传文件并提示用户输入凭据时,不会使用我们Intranet上使用的集成Windows身份验证。解决方法是使用无cookie会话,由于其他一些原因,这将是我们项目的噩梦。

Java上载器:我注意到几个基于Java的多文件上载器,但大多数看起来都是花钱的。如果我发现一个效果很好的产品,我可以安排购买。我宁愿不那样。我也不喜欢其中大多数的外观。我喜欢FancyUpload,因为它可以与html / javascript交互,因此我可以轻松地按自己的方式设置样式和管理它。

ActiveX Uploader:我也找到了ActiveX解决方案。看来ActiveX可以使用。我只会写我自己的而不是买那个。我认为,这将是我的最后选择。

解析度

我希望能够使用FancyUpload之类的东西。如果我可以通过某种方式获得凭据提示,那将是完美的。但是,根据我的研究,似乎唯一真正的解决方法是无cookie会话,而我只是做不到。

因此,问题是:有没有办法解决上述问题,或者有没有列出的实现相同目标的其他解决方案?

解决方案

回答

我们也可以尝试将SWFUpload放入Flash Uploader的"类别"中。

回答

在Internet Explorer中,FileReference.upload(闪存上传)也将发送cookie。

仅当在其他浏览器中运行时,此行为才会中断。

回答

我认为集成的Windows身份验证没有任何解决方法。我们可能要做的就是将文件保存到通用的不受保护的文件夹中,如果使用swfupload,请在文件完全上传后使用处理程序移动文件

回答

@ davidinbcn.myopenid.co:基本上这就是我解决此问题的方法。但是,为了提供更详细的答案,我在这里发布了我的解决方案。

解决方案!

创建两个Web应用程序或者网站,或者其他。

应用程序A是一个简单的Web应用程序。此应用程序的目的是接收文件上传并将其保存到正确的位置。将此设置为允许的匿名访问。然后制作一个接受发布文件并将其保存到给定位置的ASPX页面。 (我正在Intranet上进行此操作。Internet站点可能会因此而使自己暴露于安全问题。在这种情况下,请采取额外的预防措施。)此页面后面的代码如下所示:

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页面。

回答

我们公司使用ajaxuploader.com来支持此功能。