3

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

平台

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

允许的第 3 方选项

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

目前的尝试

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

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

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

Java Uploader:我注意到几个基于 Java 的多文件上传器,但大多数似乎都需要花钱。如果我发现一个非常好用的,我可以安排购买它。我宁愿不要。我也不喜欢他们中的大多数人的样子。我喜欢 FancyUpload,因为它与 html/javascript 交互,因此我可以轻松地以任何我想要的方式设置和管理它。

ActiveX Uploader:我也找到了一个 ActiveX 解决方案。ActiveX 似乎可以工作。我会自己写而不是买那个。这将是我最后的手段,我想。

解析度

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

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

4

5 回答 5

2

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

于 2008-09-16T08:58:25.500 回答
1

您也可以尝试SWFUpload - 它适合您的 Flash Uploader“类别”。

于 2008-09-08T20:54:06.050 回答
1

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

于 2009-01-08T17:33:45.117 回答
0

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

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

于 2008-09-16T08:49:57.033 回答
0

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

于 2008-10-27T15:35:07.910 回答