我有几个解决方案,但没有一个能完美工作。

平台

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

允许的第 3 方选项

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

目前的尝试

Gmail 风格:您可以使用 javascript 添加新的上传元素(输入类型='文件'),然后通过单击按钮一次性上传所有元素。这可行,但仍然需要大量点击。(我能够使用不可见的 ActiveX 控件来检测文件大小等内容,这将很有用。)

闪存上传器:我发现了几个 Flash Upload 控件,它们使用 1x1 flash 文件作为上传器,可由 javascript 调用。(这样的控制之一是 花式上传, ,另一个是 Dojo 的多文件上传器, ,还有一个是由 CodeProject 的 darick_c.)这些让我很兴奋,但我很快遇到了两个问题:

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

Java上传器:我注意到几个基于 Java 的多文件上传器,但大多数似乎都是花钱的。如果我发现一款效果非常好,我可以安排购买。我只是不想。我也不喜欢他们大多数人的外表。我喜欢 FancyUpload 因为它与 html/javascript 交互,这样我就可以轻松地以我想要的方式设计和管理它。

ActiveX上传器:我发现 ActiveX 解决方案 以及。看起来 ActiveX 可以工作。我会自己写一个而不是购买那个。我想这将是我最后的手段。

解决

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

所以,问题是:有没有办法解决上述问题,或者是否有我未列出的不同解决方案可以实现相同的目标?

有帮助吗?

解决方案 5

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

解决方案!

创建两个 Web 应用程序、网站或其他任何内容。

应用A 是一个简单的网络应用程序。该应用程序的目的是接收文件上传并将其保存到正确的位置。将其设置为允许匿名访问。然后创建一个接受发布的文件并将它们保存到给定位置的 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 应用程序,不允许匿名访问。然后,放置 花式上传 (或类似的解决方案)在此网站的页面上。将其配置为将其文件发布到应用程序 A 的上传 ASPX 页面。

其他提示

我认为集成 Windows 身份验证没有任何解决办法。您可以做的是将文件保存到通用的不受保护的文件夹中,并且在 swfupload 的情况下,使用处理程序在文件完全上传后移动文件

你可以尝试 SWF上传 同样 - 它也适合您的 Flash Uploader“类别”。

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

在 Internet Explorer 中,FileReference.upload(闪存上传) 将要 也一起发送cookies。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top