如何知道如何从c#上传文件到Google网站?
我正在尝试上传但收到403错误。但是,我使用相同的凭据连接到网站并获取网站上的附件和页面列表。
非常感谢任何帮助!!
答案 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;
}
}