这是我的代码
上传视频大小 7Mb
上传视频类型 MP4
类别。SelectedItem.Text : video/mp4
if (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.Web异常: 请求已中止: 请求已取消。---> System.IO.IOException:无法关闭流 直到写入所有字节。在 System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean 中止)--- 内部异常堆栈跟踪结束 --- System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean 中止)在 System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeState) at System.Net.ConnectStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at Google.GData.Client.GDataGAuthRequest.CopyRequestData() at Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter) at Google.GData.Client.GDataGAuthRequest.Execute() at Google.GData.Client.MediaService.EntrySend(Uri feedUri, AtomBase baseEntry, GDataRequestType type, AsyncSendData data) at Google.GData.Client.Service.Insert(Uri feedUri, AtomEntry newEntry, AsyncSendData data) at Google.GData.Client.Service.Insert[TEntry](Uri feedUri, TEntry entry) at Google.GData.YouTube.YouTubeService.Upload(String userName, YouTubeEntry entry) at Google.YouTube.YouTubeRequest.Upload(String 用户名,视频 v) 在 Youtube_upload。Page_Load(对象发送方, 事件参数 e) 在 d:\Kidzaina_Final\video_upload.aspx.cs:第 67 行
您必须使用断点续传机制来上传大文件。检查YouTubeUploader来源以获取使用ResumableUploader组件的完整示例:
http://code.google.com/p/google-gdata/source/browse/#svn%2Ftrunk%2Fclients%2Fcs%2Fsamples%2FYouTubeUploader