如何在内部Windows身份验证的局域网中允许多个文件上传?

3
我有几个解决方案,但没有一个完美地工作。
平台:
1. ASP.NET / VB.NET / .NET 2.0 2. IIS 6 3. IE6(主要),一些IE7;Firefox不是必须的,但很有用
允许的第三方选项:
1. Flash 2. ActiveX(最好避免) 3. Java(最好避免)
当前尝试:
Gmail风格:您可以使用JavaScript添加新的上传元素(input type='file'),然后通过单击按钮一次性上传它们。这种方法可行,但仍需要很多点击。 (我能够使用一个不可见的ActiveX控件来检测文件大小等信息,这将非常有用。) Flash上传控件:我发现了几个使用1x1闪存文件作为上传器并可由JavaScript调用的Flash上传控件(其中一个是FancyUpload,另一个是Dojo的多文件上传器,还有一个是CodeProject上的darick_c)。这让我很兴奋,但我很快遇到了两个问题:
  1. Flash 10将破坏用于调用多文件上传对话框的功能。解决方法是使用透明的Flash框架,或者只使用Flash按钮来调用对话框。这不是很大的问题。
  2. 我们内部网络中使用的集成Windows身份验证在Flash文件尝试上传文件时不起作用,会提示用户输入凭据。解决此问题的方法是使用无cookie会话,但由于其他几个原因,这对我们的项目来说将是一场噩梦。

Java Uploader: 我注意到有几个基于Java的多文件上传器,但大多数都需要付费。如果我找到一个真正好用的,我可以安排购买它。但我不想这样做。我也不喜欢它们的外观。我喜欢FancyUpload,因为它与html/javascript交互,所以我可以轻松地按自己的方式进行样式和管理。

ActiveX Uploader: 我也找到了一个ActiveX解决方案。看起来ActiveX会起作用。我只是想自己编写而不是购买那个。我认为这将是我的最后一招。

解决方法

我很想使用像FancyUpload这样的东西。如果我能以某种方式通过凭据提示,那就太完美了。但是,根据我的研究,似乎唯一的解决方法是无cookie会话,而我做不到这一点。

因此,问题是:是否有一种解决上述问题的方法,或者是否有其他未列出的解决方案可以实现相同的目标?

5个回答

2

我认为集成的Windows身份验证没有任何解决方法。你可能可以将文件保存到一个通用的未受保护的文件夹中,然后在使用swfupload时,使用处理程序在文件完全上传时移动文件。


1

1
你也可以尝试使用SWFUpload,它适合于你的Flash上传器“类别”。

不错,但我相当确定它有与其他闪存解决方案相同的缺陷。如果不是,请告诉我。 - EndangeredMassa

0

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

解决方案!

创建两个Web应用程序或网站。

应用程序A是一个简单的Web应用程序。该应用程序的目的是接收文件上传并将其保存到正确的位置。将其设置为允许匿名访问。然后创建一个单独的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

应用程序 B 是您的主要网站,允许文件上传。将其设置为经过身份验证的 Web 应用程序,不允许匿名访问。然后,在此站点上的页面上放置 FancyUpload(或类似解决方案)。将其配置为将文件发布到应用程序 A 的上传 ASPX 页面。


0
在Internet Explorer中,FileReference.upload(flash上传)同时发送cookies。
只有在其他浏览器中运行时才会出现此问题。

我想我读过那个,但是当我尝试时IE提示我输入凭据。 - EndangeredMassa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接