jes*_*vin 6 asp.net-mvc asynchronous asp.net-mvc-3
我正在构建一个图像管理工具,我想知道如何创建类似Vimeo的体验.
需要说明的内容
用户将能够使用plupload上传许多可能较大的图像(无页面重新加载).然后,服务器将对每个上载的映像执行以下操作.
提供异步反馈
Plupload(图像上传工具)在将文件上传到我的服务器时有非常好的视觉反馈,但是,我希望能够在服务器进行所有图像处理并上传到远程存储时向用户提供额外的反馈.
Vimeo做得很好.当您上传视频时,它会确认已上传,但随后说"我们正在对您的视频进行编码,请稍候",并且用户界面会提供某种进度指示.
在将图像上传到我的服务器后,我想给用户两种反馈.每次处理图像并上传到S3时,我想:
示例MVC控制器操作
[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");
}
Run Code Online (Sandbox Code Playgroud)
限制
使用此网络应用的用户将使用最新版本的Chrome.不需要解决跨浏览器问题.我们正在使用asp.net MVC 3和SQL Server 2005
谁能指出我正确的方向?有没有很好的资源来展示我如何能够完成这样的事情?
Rsenna 的评论链接到名为 WebSync 的东西,它是基于 .NET 的 Comet 实现。如果您绝对需要异步进程完成时的实时通知,那就太棒了。
但是,我认为老式的民意调查可能足以满足您的情况。SomeAsyncImageProcessor 仍然是一个异步进程(因此您的应用程序不会冻结。)
但是,一旦浏览器返回“成功”(表明上传已成功完成),您的页面就会开始定期(可能是 1 或 2 秒)轮询“状态”URL(取决于您预计这些过程需要多长时间)。 )
对于每个图像,按顺序检查状态 URL。 http://mysite/imageprocessor/status?albumId=guid&stepid=3
状态 URL 要么返回应重新检查状态的指示符,要么返回成功和亚马逊缩略图的 URL(或您网站上的 URL)。重新检查,直到检查完最后一步。
| 归档时间: |
|
| 查看次数: |
1271 次 |
| 最近记录: |