加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c#HTTP POST – 需要跟踪发布/上传进度

发布时间:2020-12-16 09:36:52 所属栏目:百科 来源:网络整理
导读:我的代码可以很好地将文件POST到预先签名的Amazon S3网址.但是,我想跟踪大文件的POST /上传进度.有没有一种简单的方法将其添加到我的代码中?我该怎么做?我不需要进度条,只需要输出到控制台,文件传输的百分比是完整的,例如: 123etc WebRequest request = W
我的代码可以很好地将文件POST到预先签名的Amazon S3网址.但是,我想跟踪大文件的POST /上传进度.有没有一种简单的方法将其添加到我的代码中?我该怎么做?我不需要进度条,只需要输出到控制台,文件传输的百分比是完整的,例如:
123etc

WebRequest request = WebRequest.Create(PUT_URL_FINAL[0]);
//PUT_URL_FINAL IS THE PRE-SIGNED AMAZON S3 URL THAT I AM SENDING THE FILE TO

request.Timeout = 360000; //6 minutes

request.Method = "PUT";

//result3 is the filename that I am sending                                     
request.ContentType = MimeType(result3)

byte[] byteArray =
    File.ReadAllBytes(result3);

request.ContentLength = byteArray.Length;

Stream dataStream = request.GetRequestStream();

dataStream.Write(byteArray,byteArray.Length); 

dataStream.Close();

//This will return "OK" if successful.
WebResponse response = request.GetResponse();
Console.WriteLine("++ HttpWebResponse: " +
                  ((HttpWebResponse)response).StatusDescription);

解决方法

我会使用WebClient的UploadDataAsync() method并绑定到其UploadProgressChanged event.

– 更新:更改样本以使用UploadDataAsync而不是UploadFileAsync

稍微修改过的样本来自MSDN:

public static void UploadDataInBackground (string address,byte[] data)
    {
        WebClient client = new WebClient ();
        Uri uri = new Uri(address);


        // Specify a progress notification handler.
        client.UploadProgressChanged += new UploadProgressChangedEventHandler(UploadProgressCallback);
        client.UploadDataAsync (uri,"POST",data);
        Console.WriteLine ("Data upload started.");
    }

private static void UploadProgressCallback(object sender,UploadProgressChangedEventArgs e)
{
    // Displays the operation identifier,and the transfer progress.
    Console.WriteLine("{0}    uploaded {1} of {2} bytes. {3} % complete...",(string)e.UserState,e.BytesSent,e.TotalBytesToSend,e.ProgressPercentage);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读