我想通过Google Documents List API(C#)中的System.IO.FileStream上传/更新文件?
我使用以下两种方式:Google.GData.Client.ResumableUpload.ResumableUploader
(1)public void UpdateAsync(Authenticator authentication,AbstractEntry payload,object userData)
(2)public void UpdateAsync(Authenticator authentication,Uri resumableUploadUri,Stream payload,string contentType,object userData)
(1)成功
(2)403 Forbidden或其他...... B1失败
那么,是否有人有关于(2)的任何示例代码?
我的代码(2): 此代码由 Claudio Cherubino 的示例代码编辑,用于将文件流上传到Google文档(云端硬盘)。但文件(DocumentEntry)的名称在Google云端硬盘的页面上显示为“无标题”。似乎'slu''不起作用。我是否会错过一些重要设置?
Google.GData.Documents.DocumentsService conn =
new Google.GData.Documents.DocumentsService("TestSend");
conn.setUserCredentials("UserName", "UserPass");
string path = @"D:\test_file\test.exe";
Google.GData.Client.ResumableUpload.ResumableUploader send =
new Google.GData.Client.ResumableUpload.ResumableUploader();
send.AsyncOperationCompleted += new Google.GData.Client.AsyncOperationCompletedEventHandler(
delegate(object sender,
Google.GData.Client.AsyncOperationCompletedEventArgs e)
{
System.Windows.Forms.MessageBox.Show("File Send Done");
}
);
System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite);
send.InsertAsync(
new Google.GData.Client.ClientLoginAuthenticator("TestSend", "writely", this._DiskConn.Credentials),
new System.Uri("https://docs.google.com/feeds/upload/create-session/default/private/full?v=3"),
fs,
"application/octet-stream",
System.IO.Path.GetFileName(path),
new object()
);
答案 0 :(得分:0)
请尝试以下代码:
DocumentsService service = new DocumentsService("MyDocumentsListIntegration-v1");
ClientLoginAuthenticator authenticator = new ClientLoginAuthenticator(APPLICATION_NAME, ServiceNames.Documents, USERNAME, PASSWORD);
string slug = "Legal contract";
MediaFileSource mediaSource = new MediaFileSource("c:\\contract.txt", "text/plain");
Uri createUploadUrl = new Uri("https://docs.google.com/feeds/upload/create-session/default/private/full?v=3");
ResumableUploader ru = new ResumableUploader();
ru.InsertAsync(authenticator, createUploadUrl, mediaSource.GetDataStream(), mediaSource.ContentType, slug, new object());