Ошибка при загрузке видео на сервер youtube через google api

Это мой код

Размер загружаемого видео 7 МБ

тип загрузки видео mp4

category.SelectedItem.Text : видео/mp4

если (FileUpload1.PostedFile != null)
{

        HttpPostedFile postfiles = FileUpload1.PostedFile;
        if (postfiles.ContentLength > 0)
        {
            System.IO.Stream iStream = postfiles.InputStream;
            byte[] filedata = new byte[postfiles.ContentLength];
            iStream.Read(filedata, 0, postfiles.ContentLength);
            postfiles.SaveAs(@"c:\Temp\" + postfiles.FileName);
            YouTubeRequestSettings settings = new YouTubeRequestSettings("AAA", youtube_DVkey, g_username, g_password);
            YouTubeRequest request = new YouTubeRequest(settings);
            Video newvideo = new Video();
            newvideo.Title = txtTitle.Text;
            newvideo.Tags.Add(new MediaCategory(category.SelectedItem.Text, YouTubeNameTable.CategorySchema));
            newvideo.Keywords = txtKeywords.Text;
            newvideo.Description = txtDescription.Text;
            newvideo.Private = false;
            newvideo.Tags.Add(new MediaCategory(txtTitle.Text.Trim(), YouTubeNameTable.DeveloperTagSchema));
            newvideo.YouTubeEntry.Location = new Google.GData.Extensions.Location.GeoRssWhere(37, -122);
            newvideo.YouTubeEntry.MediaSource = new MediaFileSource(@"c:\Temp\" + postfiles.FileName, Video_type.SelectedItem.Text);
            try
            {
                Video result_video = request.Upload(youtubeaccount, newvideo);
                File.Delete(@"c:\Temp\" + postfiles.FileName);
                Response.Redirect("gallery.aspx");

            }
            catch (Google.GData.Client.GDataRequestException ex)
            {
                Response.Write(ex.ToString());
            }
            catch (Google.GData.Client.InvalidCredentialsException ex)
            {
                Response.Write("Invalid credentials" + ex.ToString());
            }
            catch(Exception ex)
            {
                Response.Write("Failed to upload!" + ex);
            }
        }
    }

Исключение

Не удалось загрузить!System.Net.WebException: запрос был прерван: запрос был отменен. ---> System.IO.IOException: Невозможно закрыть поток, пока не будут записаны все байты. at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting) --- Конец трассировки внутреннего стека исключений --- at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting) в System.Net.ConnectStream.System .Net.ICloseEx.CloseEx(CloseExState closeState) в System.Net.ConnectStream.Dispose(логическое удаление) в System.IO.Stream.Close() в Google.GData.Client.GDataGAuthRequest.CopyRequestData() в Google.GData.Client .GDataGAuthRequest.Execute(Int32 retryCounter) в Google.GData.Client.GDataGAuthRequest.Execute() в Google.GData.Client.MediaService.EntrySend(Uri feedUri, AtomBase baseEntry, тип GDataRequestType, данные AsyncSendData) в Google.GData.Client. Service.Insert(Uri feedUri, AtomEntry newEntry, данные AsyncSendData) в Google.GData.Client.Service.Insert[TEntry](Uri feedUri, запись TEntry) в Google.GData.YouTube.YouTubeService.Upload(String userName, запись YouTubeEntry) в Google.YouTube.YouTubeRequest.Upload(String userName, Video v) в Youtube_upload.Page_Load(отправитель объекта, EventArgs e) в d:\Kidzaina_Final\video_upload.aspx.cs:строка 67


person Rajamohan Anguchamy    schedule 22.06.2012    source источник


Ответы (1)


Для загрузки больших файлов необходимо использовать механизм возобновляемой загрузки. Полный пример использования компонента ResumableUploader можно найти в исходном коде YouTubeUploader:

http://code.google.com/p/google-gdata/source/browse/#svn%2Ftrunk%2Fclients%2Fcs%2Fsamples%2FYouTubeUploader

person Claudio Cherubino    schedule 22.06.2012