use*_*912 10 c# asp.net amazon-s3 amazon-ec2 amazon-web-services
我想在我的网页上的进度条中显示文件上传进度,同时将文件上传到Amazon S3 ...
在我的网页上,我从文件输入中选择一个文件,该文件使用Ajax POST请求调用我的控制器.
在控制器中,我从发布的请求中提取文件.
var hpf = Request.Files[1];
Run Code Online (Sandbox Code Playgroud)
然后我调用一个使用AmazonS3Client的方法..
UploadVideoMultiPart(hpf.InputStream,fileName)
Run Code Online (Sandbox Code Playgroud)
以上方法完成上传到S3完全正常,并在此过程中重复发送上传的数字字节.
public static void UploadPartProgressEventCallback(object sender, StreamTransferProgressArgs e)
{// Process event.
Var progress = (string.Format("{0}/{1}", e.TransferredBytes, totalContentLength));
}
Run Code Online (Sandbox Code Playgroud)
例:
TransferredBytes TotalBytes
8778 152652556
2562 152652556
如何在不停止上传线程的情况下将UploadPartProgressEventCallback中的数据发送回浏览器.
如果我能获得这些数据,我将能够更新我的进度条.
您需要在服务器与客户端之间进行通信
在这种情况下,SignalR是你的救星,在SignalR的帮助下,你可以将内容从服务器端推送到Clientside.
整个文档在这里SignalR @ GitHub
您可以按照这些
网络资源,以及
(假设您已通过上述链接)
现在回到你的需要,
你甚至可以挂钩SignalR广播,即可以调用客户端方法并管理Hub类之外的组
一个例子说明精美这里在本实施例
虽然如果你不熟悉它会成为新的api,但相信我不会花太多时间来掌握它,