Advertisement
Guest User

Untitled

a guest
Sep 29th, 2023
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.89 KB | Source Code | 0 0
  1.  else
  2.                 {
  3.  
  4.                     FileInfo file = new FileInfo(filePath);
  5.                     long size = (long)file.Length;
  6.  
  7.  
  8.                     byte[] chunk = new byte[1024 * 1024 * 4]; // Ρ‡Π°Π½ΠΊ 4MB
  9.                     long startPosition = 0;
  10.                     int index = 0;
  11.  
  12.                     if (headersDictionary.Keys.Contains("Range:"))
  13.                     {
  14.                         int.TryParse(headersDictionary["Range:"].Split(new char[] { '=', '-' })[1], out int range);
  15.  
  16.                         startPosition = range;
  17.                     }
  18.  
  19.                     if ((size - startPosition) < chunk.Length)
  20.                     {
  21.                         chunk = new byte[size - startPosition];
  22.                     }
  23.  
  24.  
  25.                     try
  26.                     {
  27.  
  28.                         using(var fileStream = File.OpenRead(filePath))
  29.                         {
  30.                             fileStream.Position = startPosition;
  31.  
  32.                             var chunkSize = fileStream.Read(chunk, index, chunk.Length);
  33.  
  34.                             Console.WriteLine(chunk.Length);
  35.                         }
  36.                     }
  37.                     catch (Exception ex)
  38.                     {
  39.  
  40.                         Console.WriteLine(ex);
  41.                     }
  42.  
  43.                     byte[] httpHeadersBytes = Encoding.UTF8.GetBytes(
  44.                     "HTTP/1.1 206 Partial Content\r\n" +
  45.                     $"Content-Length: {file.Length}\r\n" +
  46.                     "Accept-Ranges: bytes\r\n" +
  47.                     $"Content-Range: bytes {startPosition} - {file.Length - 1} / {file.Length}\r\n" +
  48.                     $"Content-Type: video/webm\r\n\r\n");
  49.  
  50.                     byte[] httpResponseBytes = httpHeadersBytes.Concat(chunk).ToArray();
  51.  
  52.                     writer.BaseStream.Write(httpResponseBytes, 0, httpResponseBytes.Length);
  53.                 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement