【发布时间】:2011-03-18 17:00:55
【问题描述】:
我正在构建一个图像管理工具,我想知道如何创建类似 Vimeo 的体验。
描述需要发生的事情
用户将能够使用plupload 上传许多可能较大的图像(无需重新加载页面)。然后服务器会对每张上传的图片进行如下操作。
- 图像将被调整为 几个版本(例如拇指,小, 中、大)
- 每个副本都有 完成了一些图像处理(例如 卷积滤波器)
- 这些已调整大小 副本将上传到 Amazon S3
- 将存储有关每个图像的信息 到数据库(宽度,高度, 模仿类型,文件名)
- 那么服务器应该触发某种反馈给用户
提供异步反馈
Plupload(图像上传工具)在将文件上传到我的服务器时具有非常好的视觉反馈,但是,我希望能够在服务器进行所有图像处理并上传到远程存储时向用户提供额外的反馈。
Vimeo 很好地做到了这一点。当您上传视频时,它会确认已上传,但随后会显示“我们正在对您的视频进行编码,请稍候”,并且 UI 会提供某种进度指示器。
图片上传到我的服务器后,我想给用户两种反馈。每次处理图像并将其上传到 S3 时,我都希望:
- 在浏览器上更新消息 说“15 张图片中有 5 张是 已处理”,我想
- 显示该图像的缩略图。
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");
}
约束
使用此网络应用程序的人将使用最新版本的 Chrome。无需解决跨浏览器问题。我们正在使用 asp.net MVC 3 和 SQL Server 2005
谁能指出我正确的方向? 有没有什么很好的资源可以展示我如何完成这样的事情?
【问题讨论】:
-
这称为 Comet(或 ReverseAJAX),目前 IIS 不太支持。看看这个:stackoverflow.com/questions/2259633/…
-
你有没有找到解决方案:我正在尝试这样做:图像将被调整为多个版本(例如拇指、小、中、大)每个副本都会完成一些图像处理(例如卷积过滤器)这些调整大小的副本将上传到 Amazon S3 有关每个图像的信息将存储到数据库(宽度、高度、mimetype、文件名)但我无法成功,请您帮帮我吗?
标签: asp.net-mvc asp.net-mvc-3 asynchronous