从web api C#上载.mp4到Azure媒体服务

时间:2015-03-06 11:16:07

标签: c# azure

我有一个用C#编写的API,用于从前端接收文件。截至目前,它是一个字节数组,我想将其转换为.mp4文件,然后将其发送到我的azure媒体服务与blobstorage。我不想在本地存储它,我也无法从磁盘读取它。对此最好的方法是什么?

我像这样创建我的CloudBlobClient:

 private CloudBlobClient CloudBlobClient()
        {
            var storageAccount =         CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString);
            var blobStorage = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobStorage.GetContainerReference(Constants.VideoBlobContainer);
            if (container.CreateIfNotExist())
            {
                var permissions = container.GetPermissions();
                permissions.PublicAccess = BlobContainerPublicAccessType.Container;
                container.SetPermissions(permissions);
            }
            return blobStorage;
        }

然后我有这个方法,我已经开始

 private Uri UploadToStorage(CloudBlobClient blobStorage, byte[] video, VideoSize size)
        {
            var uniqueBlobName = GetVideoUriAsString(VideoId, Type, size);
            CloudBlockBlob blob = blobStorage.GetBlockBlobReference(uniqueBlobName);

我不确定如何在这里进行。我一直在网上寻找方法,但我找到的只是从磁盘读取的控制台应用程序的例子。

有没有人喜欢这种类型的上传到媒体服务?

1 个答案:

答案 0 :(得分:1)

你正在那里,虽然你应该从第一种方法获得blob容器中blob的引用。非常粗糙但是你走了:

public void uploadBytesToBlobWithMimeAndStorageCreds(string theFolder, string theFileName, byte[] videoBytes, string theMimeType)
{
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString);

    CloudBlobClient client = storageAccount.CreateCloudBlobClient;
    CloudBlobContainer container = client.GetContainerReference(theFolder);

    CloudBlob blob = container.GetBlobReference(theFileName);
    blob.UploadByteArray(theBytes);
    blob.Properties.CacheControl = "max-age=3600, must-revalidate";
    blob.Properties.ContentType = theMimeType; // e.g. "video/mp4"
    blob.SetProperties();

}