【问题标题】:How to display file upload progress in progressbar - Amazon S3 bucket如何在进度条中显示文件上传进度 - Amazon S3 存储桶
【发布时间】:2023-03-03 00:52:01
【问题描述】:

在将文件上传到 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 发送回浏览器。

如果我能得到这些数据,我就能更新我的进度条。

【问题讨论】:

  • 如果你使用ajax并从浏览器直接上传到s3你会显示一个进度条。
  • @user1526912 您可以使用xhr.upload.onprogress right / 在客户端检查已传输的字节数

标签: c# asp.net amazon-web-services amazon-s3 amazon-ec2


【解决方案1】:

你需要一些东西在你的服务器和客户端之间进行通信

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

完整的文档在这里SignalR@GitHub

您也可以关注这些
web resources

(假设您已浏览上述链接)

现在回到您的需求,

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

这里有一个很好解释的例子In this Example

虽然如果你不熟悉它会学习新的api,但相信我不会花太多时间掌握它,

【讨论】:

    【解决方案2】:

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

    详情可以在这里找到:

    下面的SO文章也详细讲了这个

    【讨论】:

      猜你喜欢
      • 2011-12-09
      • 2011-03-10
      • 2021-11-14
      • 2018-04-12
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多