我需要生成一个SAS链接来发送到其他服务,这个服务将使用CopyFromUrl方法复制文件,我想根据文件的大小来设置过期时间,但是…。我在文档中找不到任何页面,上面写着复制操作的速度。有人能用这个指引我吗?
发布于 2022-07-03 08:35:41
您可以测试从世界各地的Azure存储服务下载速度。通过这些AzureSpeed服务。
或
您可以使用这些代码检查下载速度。在我的我使用这些代码检查3个文件的速度。21 mb,100 mb和675 mb文件。
static async Task Main(string[] args)
{
await GetFileAsync("https://myaccount/210mb.pdf?sp=r&st=2022-07-02T10:22:24Z&se=2022-07-03T18:22:24Z&sv=2021-06-08&sr=b&sig=zwhyKzuGhuUxxX8PEpgnwFzbhfg4x1UoPzNUvclQQGo%3D", 21);
await GetFileAsync("https://myaccount/100mb.pdf?sp=r&st=2022-07-02T10:23:24Z&se=2022-07-03T18:23:24Z&sv=2021-06-08&sr=b&sig=AFRSJkdgeHeCyAba%2F3vSTwGUvGDj1J%2B8netAvgOsk5U%3D", 100);
await GetFileAsync("https://myaccount/1gb.pdf?sp=r&st=2022-07-02T10:23:46Z&se=2022-07-03T18:23:46Z&sv=2021-06-08&sr=b&sig=cydqUlULOTnY8ruEo2ixSJX6ZQGAbCLnlcKzjLD4KXo%3D", 675);
} static async Task GetFileAsync(string file, int size)
{
HttpClient client = new HttpClient();
Stopwatch sw = new Stopwatch();
sw.Start();
using (var stream = await client.GetStreamAsync(file))
{
using (MemoryStream ms = new MemoryStream())
{
byte[] buffer = new byte[1024];
var totalBytes = client.MaxResponseContentBufferSize;
var receivedBytes = 0;
for (; ; )
{
int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
if (bytesRead == 0)
{
await Task.Yield();
break;
}
receivedBytes += bytesRead;
int received = unchecked((int)receivedBytes);
Console.Write("\r" + received / (1024) + "Kb");
}
sw.Stop();
double speeds = receivedBytes/sw.Elapsed.TotalSeconds;
Console.WriteLine("\n");
Console.WriteLine(Math.Round(speeds/1024) + " bytes/s, Total Time taken for downloading "+size +" mb size file :- "+ sw.Elapsed.TotalSeconds+" Seconds");
//var speed = size / sw.Elapsed.TotalSeconds;
//Console.Write("\t[" + Math.Round(speed / 1024, 2) + " MB/s]");
Console.WriteLine("\n");
}
}
}输出

https://stackoverflow.com/questions/72605598
复制相似问题