【问题标题】:Get progress notifications with MultipartFormDataStreamProvider and web api使用 MultipartFormDataStreamProvider 和 web api 获取进度通知
【发布时间】:2013-06-05 10:27:50
【问题描述】:

我目前正在使用此代码通过 ajax 将一些文件提交到我的 web api 控制器。

http://www.strathweb.com/2012/04/html5-drag-and-drop-asynchronous-multi-file-upload-with-asp-net-webapi/

我想知道是否有任何方法可以使用MultipartFormDataStreamProvider 来获取有关正在接收/写入磁盘的文件的进度通知。

我知道这有 HTML5 api,但我不能使用它,因为我需要 IE 9 中的进度通知。

我打算使用 SignalR 将这些更改发送给客户端。 这需要通过拖放来实现,所以我不能使用像 uploadify 这样的插件。

【问题讨论】:

    标签: c# asp.net asp.net-web-api


    【解决方案1】:

    我知道这有 HTML5 api,但我不能使用它,因为我 在旧版浏览器中需要进度通知。

    您可以使用文件上传插件,例如Uploadify,它将测试浏览器的功能并在必要时回退。

    【讨论】:

    • 感谢达林的这个建议,我已经更新了我的问题以更清楚地说明我的用例。我觉得获取服务器端通知应该是微不足道的,感谢您的帮助。
    • 在 HTTP 等无状态协议中使用服务器端通知要困难得多。您提到了使用 WebSockets 的 SignalR,同时您提到您正在使用一些不支持 HTML 5 File API 的旧版浏览器,因此它们支持 WebSockets 的可能性更小。至于将 Uploadify 与拖放一起使用,绝对没有什么可以阻止您使用它。顺便拖放什么?从桌面到浏览器的文件?你的浏览器支持吗? SignalR 是最不适合用于此目的的技术。
    • 是的,我的浏览器支持,目标浏览器是 IE 9。IE 9 允许拖放和 ajax 文件上传,但不支持新的 HTML 5 进度。所以 SignalR 可以很好地处理我的通知。我只需要一些方法来获得服务器端的进展。 SignalR 可以使用 WebSockets,它也可以回退到长轮询,甚至可以在 IE 8 中工作。
    • 在这种情况下使用长轮询是错误的。 Uploadify 可以使用 Flash 上传文件并支持进度通知,其性能将比轮询高数百万倍。
    • 我当然同意,但是,我将无法使用它,因为我真的需要拖放支持,而 uploadify 无法使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    相关资源
    最近更新 更多