从C#Code将文件上传到Google Site

时间:2011-05-04 18:22:13

标签: c# google-sites

如何知道如何从c#上传文件到Google网站?

我正在尝试上传但收到403错误。但是,我使用相同的凭据连接到网站并获取网站上的附件和页面列表。

非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:1)

他们很可能有一个反CSRF方案,在页面和/或cookie中存储时态标识符,这特别是为了阻止机器人。 您最有可能在没有正确的CSRF令牌的情况下提交请求并被拒绝。我建议分析他们如何处理CSRF,在这一点之后,它很可能归结为对页面进行WebRequest,这样你就可以获得他们得到的任何cookie,以及拥有表单以便你可以删除任何隐藏的字段是相关的。然后将这些内容移到您尝试将文件发送到的帖子请求中。

答案 1 :(得分:0)

我找出了问题并解决了问题。以下是完整的功能:

public bool UploadAttachment()
    {
        try
        {
            //AsyncSendData data = new AsyncSendData();

            string parentUrl = Cabinets["Cabinet1"].ToString();
            string parentID = parentUrl.Split('/')[7];

            AtomEntry entry = new AtomEntry();
            entry.Title.Text = "abc.jpg";

            AtomCategory cat = new AtomCategory();
            cat.Term = ATTACHMENT_TERM;
            cat.Label = "attachment";
            cat.Scheme = KIND_SCHEME;
            entry.Categories.Add(cat);

            AtomLink link = new AtomLink();
            link.Rel = PARENT_REL;
            link.HRef = parentUrl;
            entry.Links.Add(link);

            AtomContent content = new AtomContent();
            FileInfo info = new FileInfo("C:\\Bluehills.txt");
            FileStream stream = info.Open(FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);

            this.setUserCredentials(userName, password);
            Uri postUri = new Uri(makeFeedUri("content"));

            entry.Source = new AtomSource();
            //this.EntrySend(postUri, entry, GDataRequestType.Insert);
            // Send the request and receive the response:
            AtomEntry insertedEntry = this.Insert(postUri, stream, (string)DocumentTypes["TXT"], "bluehills");

            return true;
        }
        catch (Exception ex)
        {
            return false;
        }
    }