gpt4 book ai didi

asp.net-mvc - 带有客户端进度反馈的异步处理asp.net mvc

转载 作者:行者123 更新时间:2023-12-04 15:37:03 25 4
gpt4 key购买 nike

我正在构建一个图像管理工具,我想知道如何创建类似 Vimeo 的体验。

需要发生的事情的描述
用户将能够使用 plupload 上传许多潜在的大图像。 (没有页面重新加载)。然后服务器将对每个上传的图像执行以下操作。

  • 图像将被调整为
    多个版本(例如拇指、小、
    中、大)
  • 每个副本都会有
    完成了一些图像处理(例如
    卷积滤波器)
  • 这些调整大小
    副本将上传到 Amazon S3
  • 将存储有关每个图像的信息
    到数据库(宽度、高度、
    mimetype,文件名)
  • 然后服务器应该触发某种反馈给用户

  • 提供异步反馈
    Plupload(图像上传工具)在将文件上传到我的服务器时具有非常好的视觉反馈,但是,我希望能够在服务器执行所有图像处理并上传到远程存储时向用户提供额外的反馈。

    Vimeo 很好地做到了这一点。当您上传视频时,它会确认已上传视频,但随后会说“我们正在对您的视频进行编码,请稍候”,并且 UI 会提供某种进度指示器。

    图片上传到我的服务器后,我想给用户两种反馈。每次处理图像并将其上传到 S3 时,我想:
  • 更新浏览器上的消息
    说“15 张图片中的 5 张已经
    处理”,我想
  • 显示该图像的缩略图。

  • MVC Controller 操作示例
    [HttpPost]
    public virtual ContentResult Upload(Guid albumId)
    {
    foreach (string file in Request.Files)
    {
    HttpPostedFileBase f = Request.Files[file] as HttpPostedFileBase;
    if (f.ContentLength == 0)
    continue;

    var uploadDir = Server.MapPath("~/uploads/"+ albumId);
    var filePath = Path.Combine(uploadDir, Path.GetFileName(hpf.FileName));
    f.SaveAs(filePath);

    // How can I trigger some async task here that would be able
    // to trigger some sort of feedback to the browser when complete?
    SomeAsyncImageProcessor.ProcessImage(albumId, filePath); // ???
    }

    return Content("Success", "text/plain");
    }

    约束
    使用此网络应用程序的人将使用最新版本的 Chrome。无需解决跨浏览器问题。我们正在使用 asp.net MVC 3 和 SQL Server 2005

    任何人都可以指出我正确的方向吗?
    是否有任何很好的资源可以展示我如何完成这样的事情?

    最佳答案

    Rsenna 的评论链接到一个叫做 WebSync 的东西,它是一个基于 .NET 的 Comet 实现。如果您在异步进程完成时绝对需要实时通知,那就太好了。

    但是,我认为在您的情况下,老式的民意调查可能就足够了。 SomeAsyncImageProcessor 仍然是一个异步进程(因此您的应用程序不会卡住。)

    但是,一旦“成功”返回到浏览器(表示上传已成功完成),您的页面就会开始定期轮询“状态”URL,可能是 1 或 2 秒(取决于您期望这些过程需要多长时间。 )

    对于每个图像,按顺序检查状态 URL。 http://mysite/imageprocessor/status?albumId=guid&stepid=3

    状态 URL 要么返回一个指示应重新检查状态的指示符,要么返回成功和一个指向亚马逊缩略图的 URL(或您网站上的 URL)。重新检查直到检查最后一步。

    关于asp.net-mvc - 带有客户端进度反馈的异步处理asp.net mvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355362/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com