【问题标题】:Upload image on background, with Thread在后台上传图片,使用 Thread
【发布时间】:2013-03-11 09:21:44
【问题描述】:

我的网站上有一个上传表单,允许用户插入一些项目(通常是树),并且他们可以选择在添加这些项目后上传图片。 上传图片大约需要 15 秒,但我想让用户选择在他们等待图片上传时添加另一个项目。 所以我想使用线程,因为: 上传完成后,页面会刷新,表单会重置,所以如果他们想添加另一个项目,他们必须等到它完成上传。

我试过这个代码:

  protected void UploadFile(Object s, EventArgs e)
        {
    Thread t = new Thread(delegate()
    {
      //code for upload the image
    )};
    t.Start();
}

但它不工作,甚至现在不上传文件。 有人知道原因吗? 谢谢。

【问题讨论】:

  • 使用ajax异步上传图片

标签: c# asp.net .net multithreading


【解决方案1】:

只有在收到完整的请求后才会调用您的服务器端代码。
所以使用线程不会有太大帮助。

如果您想在上传过程中保持页面交互,您应该寻找基于 ajax 的解决方案。

一个非常简单的选项是uploadify。您可以将其连接到 HttpHandler 并在应用程序保持交互时在后台进行上传。

【讨论】:

    【解决方案2】:

    上传文件所需的时间并不在于处理文件——您可能只是将文件保存在某个地方——而是通过网络传输文件。

    所以我建议不要在这里尝试进行后台处理,只需以正常方式处理即可,它的性能也一样。用户只需等待图像通过网络发送即可。

    如果用户在上传图片时需要添加其他项目,您可以随时让您的网站在浏览器的选项卡/窗口中打开另一个页面。

    【讨论】:

    • 我用另一个窗口做的,把它放在 iframe 中,它很棒。
    • iFrame,感觉不错 :-)
    【解决方案3】:

    也许您可以看看HTML5 can do for you 向用户提供更多反馈,说明他的文件已上传。就像 Roy 指出的那样,传输时间很重要,用户无论如何都必须等待。但是使用 HTML5 或许您可以提供一些不错的进度条来改善上传页面的用户体验。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      相关资源
      最近更新 更多