Я попытался загрузить изображение на sharepoint и получил 400 неверных запросов. Я отследил его в фиддлере, и он вернул следующее:
Фиддлер: {"error": {"code": "- 1, Microsoft.SharePoint.Client.InvalidClientQueryException", "message": {"lang ":" en-US "," value ":" Выражение \ "web / GetFolderByServerRelativeUrl ('/.../.../ Documents / 346b82c5-a8f7-48a2-ab96-534c15ea5cb2.PNG') / Files / add (url = '346b82c5-a8f7-48a2-ab96-534c15ea5cb2.PNG', overwrite = False) \ "недопустимо."}}}
Пожалуйста, помогите найти правильный способ отправки данных
class SpRestClient
{
private static HttpClient httpClient = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true });
public SpRestClient(string baseUrl)
{
httpClient.BaseAddress = new Uri(baseUrl);
httpClient.DefaultRequestHeaders.Clear();
httpClient.DefaultRequestHeaders.Add("accept", "application/json;odata=verbose");
}
public void Post(string resourceUri, Stream stream)
{
var requestContent = new StreamContent(stream);
requestContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json;odata=verbose");
httpClient.DefaultRequestHeaders.Add("X-RequestDigest", RequestFromDigest());
var response = httpClient.PostAsync(resourceUri, requestContent).Result;
response.EnsureSuccessStatusCode();
}
private string RequestFromDigest()
{
var endpointUrl = string.Format($"/_api/contextInfo");
var result = httpClient.PostAsync(endpointUrl, new StringContent(string.Empty)).Result;
result.EnsureSuccessStatusCode();
var content = result.Content.ReadAsStringAsync().Result;
return JObject.Parse(content)["d"]["GetContextWebInformation"]["FormDigestValue"].ToString();
}
}
class Program
{
static void Main(string[] args)
{
try
{
string fileName = "346b82c5-a8f7-48a2-ab96-534c15ea5cb2.PNG";
string serverRelativeUrl = string.Format($"/.../.../Documents/{ fileName }");
string resourceUrl= string.Format($"/_api/web/GetFolderByServerRelativeUrl('{ serverRelativeUrl }')/Files/add(url='{ fileName }',overwrite=False)");
string baseUrl = "http://...";
var client = new SpRestClient(baseUrl);
client.Post(resourceUrl, OpenFile());
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
static Stream OpenFile()
{
Stream fs = File.OpenRead(@"C:\Downloads\60d21842-2dcd-4c56-b45d-db0dccf36d88.PNG");
return fs;
}
}