Asp.net mvc 使用客户端进度反馈异步处理asp.net mvc
我正在构建一个图像管理工具,我想知道如何创建类似Vimeo的体验 需要发生什么的描述Asp.net mvc 使用客户端进度反馈异步处理asp.net mvc,asp.net-mvc,asp.net-mvc-3,asynchronous,Asp.net Mvc,Asp.net Mvc 3,Asynchronous,我正在构建一个图像管理工具,我想知道如何创建类似Vimeo的体验 需要发生什么的描述 用户将能够使用(无需重新加载页面)上载许多可能较大的图像。然后服务器将对每个上载的图像执行以下操作 图像的大小将调整为 多个版本(例如拇指、小型、, 中型、大型) 每份都有 完成一些图像处理(例如。 卷积滤波器 这些调整了大小 副本将上载到Amazon S3 将存储每个图像的相关信息 到数据库(宽度、高度、, mimetype,文件名) 然后服务器应该向用户触发某种反馈 提供异步反馈 Plupload(图像
用户将能够使用(无需重新加载页面)上载许多可能较大的图像。然后服务器将对每个上载的图像执行以下操作
- 图像的大小将调整为 多个版本(例如拇指、小型、, 中型、大型)
- 每份都有 完成一些图像处理(例如。 卷积滤波器
- 这些调整了大小 副本将上载到Amazon S3
- 将存储每个图像的相关信息 到数据库(宽度、高度、, mimetype,文件名)
- 然后服务器应该向用户触发某种反馈
Plupload(图像上载工具)在将文件上载到我的服务器时具有非常好的视觉反馈,但是,我希望能够在服务器执行所有图像处理并上载到远程存储时向用户提供额外的反馈 维梅奥做得很好。当你上传一个视频时,它会确认你已经上传了,但是会说“我们正在对你的视频进行编码,请稍候”,用户界面会给出一些进度指示 我想给用户两种反馈后,图像已上传到我的服务器。每次处理图像并将其上载到S3时,我希望:
- 在浏览器上更新消息 说“15张图片中有5张已经 我想
- 显示该图像的缩略图
[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");
}
约束使用此web应用程序的用户将使用最新版本的Chrome。无需解决跨浏览器问题。我们正在使用asp.NETMVC3和SQLServer2005 谁能给我指出正确的方向吗?
有没有很好的资源来展示我如何完成这样的任务?Rsenna的评论链接指向一个叫做WebSync的东西,它是一个基于.NET的Comet实现。如果您在异步进程完成时绝对需要实时通知,这将是非常好的选择 然而,我认为老式的民意测验对你来说可能就足够了。SomeAsyncImageProcessor仍然是一个异步进程(因此您的应用程序不会冻结) 但是,一旦“成功”返回到浏览器(表示上载已成功完成),您的页面将开始定期轮询“状态”URL,可能是1秒或2秒(取决于这些过程所需的时间) 对于每个图像,依次检查状态URL
状态URL要么返回应重新检查状态的指示器,要么返回成功和亚马逊缩略图的URL(或站点上的URL。)重新检查,直到检查完最后一步。这称为Comet(或ReverseAJAX),目前IIS不太支持它。看看这个:你是否找到了解决方案:我正试图做到这一点:图像将被调整为多个版本(例如,thumb、small、medium、large)。每个副本都会进行一些图像处理(例如卷积过滤器)。这些调整大小的副本将上载到Amazon S3。关于每个图像的信息将存储到数据库中(宽度、高度、mimetype、文件名)但我不能成功,你能帮我吗?