как читать RANGE заголовок запроса C # - PullRequest
0 голосов
/ 19 декабря 2018

как прочитать заголовок запроса RANGE и отправить байты обратно в соответствии с заголовком диапазона

Я пишу этот код, он работает для Chrome, но не в Firefox, на самом деле я хочу воспроизводить ogg типа аудио прямо в браузере, но я не могу сделатьдля Firefox это решение только для Chrome

пожалуйста, любая помощь ??

Заранее спасибо

CloudFile file = null;
string url = Request.Url.AbsoluteUri;
string fileName = Path.GetFileName(url);

var storageaccount = new CloudStorageAccount(new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(fpuser, fppass), false);
CloudFileClient fileClient = storageaccount.CreateCloudFileClient();
// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference(ShareFolder);
//share.CreateIfNotExistsAsync().Wait();
// Ensure that the share exists.
if (share.Exists())
{
    // Get a reference to the root directory for the share.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();

    // Get a reference to the directory we created previously.
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference(Pathurl);

    // Ensure that the directory exists.
    if (sampleDir.Exists())
    {
        // Get a reference to the file we created previously.
        file = sampleDir.GetFileReference(fileName);

        // Ensure that the file exists.
        if (file.Exists())
        {
            var context = System.Web.HttpContext.Current;
            Console.Write("before the file");
            try
            {
                using (Stream fs = file.OpenRead())
                {
                    Console.Write("in the file");

                    context.Response.ContentType = "audio/ogg";
                    //context.Response.Conv = "audio/ogg";
                    context.Response.AddHeader("Content-Type", "audio/ogg");
                    context.Response.Headers.Add("Content-Range", $"bytes 0-{fs.Length - 1}/{fs.Length}");
                    context.Response.AddHeader("Accept-Ranges", "0-" + fs.Length);
                    context.Response.AddHeader("Content-Length", fs.Length.ToString());

                    context.Response.StatusCode = 206; // set to partial content

                    byte[] buffer = new byte[64 * 1024];
                    //// read in chunks of 2KB
                    //byte[] buffer = new byte[2048];
                    try
                    {
                        using (BinaryWriter bw = new BinaryWriter(context.Response.OutputStream))
                        {
                            int read;
                            while ((read = fs.Read(buffer, 0, buffer.Length)) > 0)
                            {
                                bw.Write(buffer, 0, read);
                                bw.Flush(); //seems to have no effect
                            }
                            bw.Close();
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.Write("closded connection");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.Write("Error - " + ex);
            }
         // }  
         }
     }
 }

 return null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...