2008-09-08 18 views
3

我有几个解决方案,但没有一个能够完美工作。如何在内部Windows身份验证Intranet上允许多个文件上载?

平台

  1. ASP.NET/VB.NET/.NET 2.0
  2. IIS 6
  3. IE6(主要),具有一定的IE7;火狐没有必要的,但有用的

允许第三方选项

  1. 闪存
  2. 的ActiveX(想避免)
  3. 的Java(想避免)

当前尝试次数

Gmail风格:您可以使用JavaScript添加新的上传元素(输入类型='文件'),然后点击一个按钮一次全部上传。这可行,但仍需要大量的点击。 (我可以用一种无形的ActiveX控件检测之类的文件大小,这将是有益的。)

Flash上​​传:我发现一对夫妇使用一个1x1的Flash文件充当Flash上​​传控件上传者,可以通过javascript调用。 (一个这样的控制是FancyUpload,另一个是Dojo's Multiple File Uploader,又是一个由darick_c at CodeProject)。这些让我兴奋,但我很快就遇到了两个问题:

  1. 闪存10将打破被用来调用多个功能文件上传对话框。解决方法是使用透明的闪光灯框,或者使用闪光灯按钮调用对话框。这不是什么大问题。
  2. 当Flash文件尝试上载文件时,不会使用我们Intranet上使用的集成Windows身份验证,这会提示用户输入凭据。解决方法是使用无Cookie会话,由于其他原因,这对我们的项目来说是一场噩梦。

的Java上传:我发现了几个基于Java的多文件上传,但大多数似乎花钱。如果我发现一个工作得很好,我可以安排购买它。我只是不想。我也不喜欢它们中的大多数。我喜欢FancyUpload,因为它与html/javascript交互,这样我就可以轻松地按照我想要的方式进行样式和管理。

ActiveX上传器:我发现an ActiveX solution以及。看来,ActiveX将工作。我只会写我自己的,而不是购买那个。我认为这将是我的最后一招。

分辨率

我很想能够使用像FancyUpload。如果我能以某种方式获得凭证提示,那将是完美的。但是,从我的研究中看来,唯一真正的解决方法是无Cookie会话,这是我无法做到的。

所以,问题是:有没有办法解决上面提出的问题,还是有没有一个不同的解决方案,我没有列出来实现相同的目标?

回答

0

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

1

你也可以尝试SWFUpload - 它会适合你的Flash上​​传器“类别”。

+0

不错,但我相当肯定它与其他闪存解决方案有相同的缺陷。如果没有,请告诉我。 – EndangeredMassa 2008-09-08 21:46:50

0

在Internet Explorer中,FileReference.upload(flash上​​传)也一起发送Cookie。

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

+0

我想我读了,但IE浏览器在我尝试时提示我输入凭据。 – EndangeredMassa 2008-09-16 14:50:51

2

我不认为有任何解决整合Windows身份验证的工作。你可能会做的是将文件保存到一个通用的不受保护的文件夹,并在swfupload的情况下,使用处理程序来移动该文件时,完全上传

1

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

相关问题