首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c#上使用youtube-data-api发布视频属性

如何在c#上使用youtube-data-api发布视频属性
EN

Stack Overflow用户
提问于 2015-10-01 12:38:31
回答 1查看 1.6K关注 0票数 1

我试图上传视频到我的youtube帐户与youtube api v3 on asp.net。我搜索了很多,但是没有找到任何代码样本来完成这个任务。实际上,现在我可以以某种方式上传视频,但我不能给出我的视频的名称,描述等。这是我用来上传视频的代码。

代码语言:javascript
复制
        Uri uri = new Uri("https://www.googleapis.com/upload/youtube/v3/videos?part=snippet");
        WebClient wc = new WebClient();

        wc.Headers.Add("Authorization", "Bearer {access_token}");
        byte[] file = File.ReadAllBytes(Server.MapPath("/videos/test.mp4"));
        byte[] response = wc.UploadData(uri, file);

        string jSonResult = String.Format("\nResult received was {0}",
              Encoding.ASCII.GetString(response));
        return jSonResult;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-11 14:09:04

不知道你是不是已经找到解决办法了。但是这个代码在我的机器上工作!;)

代码语言:javascript
复制
    byte[] jsonBytes = Encoding.UTF8.GetBytes(json);
    //byte[] file = File.ReadAllBytes(videoFilePath);

    using (var fileStream = new FileStream(videoFilePath, FileMode.Open))
    {
        Uri uri = new Uri("https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status");

        HttpWebRequest request = (HttpWebRequest) WebRequest.Create(uri);
        request.Method = "POST";
        request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + authToken);
        request.ContentLength = jsonBytes.Length;
        request.ContentType = "application/json; charset=utf-8";
        request.Headers.Add("X-Upload-Content-Length", fileStream.Length.ToString());
        request.Headers.Add("X-Upload-Content-Type", "video/*");

        string location = string.Empty;
        using (Stream dataStream = request.GetRequestStream())
        {
            dataStream.Write(jsonBytes, 0, jsonBytes.Length);
        }
        try
        {
            using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
            {
                location = response.Headers["Location"];
            }
        }
        catch (WebException ex)
        {
            Response.Write(ex.ToString());
        }

        request = (HttpWebRequest) WebRequest.Create(location);
        request.Method = "PUT";
        request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + authToken);
        request.ContentLength = fileStream.Length;
        request.ContentType = "video/*";
        using (Stream dataStream = request.GetRequestStream())
        {
            byte[] buffer = new byte[fileStream.Length];
            var data = fileStream.Read(buffer, 0, buffer.Length);
            dataStream.Write(buffer, 0, data);
            //dataStream.Write(file, 0, file.Length);
        }
        try
        {
            using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
            {
            }
        }
        catch (WebException ex)
        {
            Response.Write(ex.ToString());
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32887816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档