【问题标题】:ASP.NET Uploading files in the background (BITS/AJAX?)ASP.NET 在后台上传文件(BITS/AJAX?)
【发布时间】:2010-08-24 09:54:30
【问题描述】:

我有一个网页,用户可以在其中创建数据库记录并选择他们想要上传到数据库服务器的文件。这些文件可能很大,比如 100mb。

我不希望用户等待,所以我希望文件在后台上传。这样他们就可以在上传文件时继续做其他事情。

BITS 是解决这个问题的方法吗?还是仅用于 Fatclient 开发?任何好的教程 ?

如果 BITS 不可行,我有什么选择?使用文件位置对服务进行 ajax 调用?

【问题讨论】:

  • 似乎 ajax 不允许发布文件,认为唯一的上传是让用户等待(带有一些进度条)直到上传完成。
  • 您可以在用户在页面上时进行上传,但用户可以在等待时执行其他任务。这就是 ajax 上传组件的用武之地。我提到的 Valums 控件在页面上创建了一个隐藏的 iframe,因此上传就发生在那里。用户可以在页面上执行其他操作(想想 GMail)。

标签: asp.net ajax file-upload microsoft-bits bits-service


【解决方案1】:

如果您说“他们可以继续做其他事情”,意思是他们可以在同一个网页上执行其他 Ajax 请求(即不离开它),您可以使用任何基于 Flash 的上传器来完成此操作(SWFUploadmany 之一)。这不需要任何东西,只需要一些 JavaScript、<input type="file"> 和嵌入式 Flash 上传器。

如果您希望用户能够离开启动上传的页面,您无法在浏览器中真正做到这一点,至少在 WebSockets 在所有浏览器中完全实现之前是这样。即便如此,这也将是相当困难的。

【讨论】:

  • 用“做其他事情”我的意思是浏览不死
  • 所以您希望用户能够在您的网页上开始上传,然后在地址栏中输入 www.cnn.com 并期望上传继续?用户是否从上传页面导航到您网站或 cnn.com 上的另一个页面是无关紧要的;离开上传页面是最重要的,并且会阻止 Flash 上传器完成。
【解决方案2】:

我认为 BITS 不会为您解决问题。我从未使用过它,但它似乎无法通过 Web 应用程序访问 - 它似乎更适合 Windows 客户端应用程序或 Windows 服务。

您可能需要考虑使用 Andrew Valums AJAX 上传控件 (http://valums.com/ajax-upload/) 或 Uploadify (http://www.uploadify.com/)。这些都是 jQuery AJAX 控件(并且 uploadify 需要 Flash)。我使用 jQuery 进行 Web 应用程序开发,所以我偏爱这些控件。我在几个项目中使用了 Valums 的上传控件,效果很好。由于 Flash 的要求,我没有在实际的生产应用程序中使用 uploadify(但它看起来非常好)。我确信还有其他适用于其他 JavaScript 框架的 AJAX 上传工具。

我希望这会有所帮助!

【讨论】:

    【解决方案3】:

    我知道这篇文章有点旧,但我遇到了同样的问题。我的解决方法是使用一个小的弹出窗口,该窗口仅包含文件上传控件和参数来确定文档的存储位置。用户可以从小弹出窗口上传文件,并在上传时继续在原始浏览器窗口上浏览他们希望的任何地方,因为他们永远不会真正离开。只是为同一条船上的其他人考虑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      相关资源
      最近更新 更多