0

我想通过 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,对象 userData)

(1) 成功。
(2) 403 Forbidden 或其他失败......

那么,有人有关于(2)的示例代码吗?

我的 (2) 代码:此代码由Claudio Cherubino的示例代码编辑,用于将文件流上传到 Google 文档(驱动器)。但是文件(DocumentEntry)的名称在 Google Drive 的页面上显示为“Untitled”。似乎“蛞蝓”不起作用。我错过了一些重要的设置吗?

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()
);
4

1 回答 1

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());
于 2012-06-11T21:19:31.327 回答