繁体   English   中英

如何在进度栏中显示文件上传进度-Amazon S3存储桶

[英]How to display file upload progress in progressbar - Amazon S3 bucket

在将文件上传到Amazon S3时,我想在网页的进度栏中显示文件上传进度。

在我的网页上,我从文件输入中选择一个文件,该文件通过Ajax POST请求调用控制器。

在控制器中,我从发布的请求中提取文件。

var hpf = Request.Files[1];

然后,我调用使用AmazonS3Client的方法。

UploadVideoMultiPart(hpf.InputStream,fileName)

上面的方法完美地完成了向S3的上载,并且在此过程中反复发送上载的数字字节。

public static void UploadPartProgressEventCallback(object sender, StreamTransferProgressArgs e)
        {// Process event. 
            Var progress = (string.Format("{0}/{1}", e.TransferredBytes, totalContentLength));
        }

例:

TransferredBytes TotalBytes

8778 152652556

2562 152652556

如何在不停止上传线程的情况下将数据从UploadPartProgressEventCallback发送回浏览器。

如果我可以获取此数据,则可以更新进度条。

您需要在服务器与客户端之间进行通信的内容

在这种情况下, SignalR是您的救星,借助SignalR,您可以将内容从服务器端推送到客户端。

整个文档在这里SignalR @ GitHub

你可以按照这些
网络资源

(假设您已通过上面的链接)

现在回到您的需求,

您甚至可以挂接SignalR广播,即可以调用客户端方法并管理Hub类之外的组

在此示例中精美解释的示例

虽然如果您不熟悉它将是学习的新API,但是请相信我,它不会花费很多时间来掌握它,

您是否考虑过将文件直接从网页上传到S3 ,而不是返回到网络服务器? (这将使您可以更轻松地控制进度条)

将文件从浏览器直接上传到S3

详细信息可以在这里找到:

以下SO文章也对此进行了详细讨论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM