Sharepoint REST Загрузить документ возвращает неверный запрос - PullRequest
0 голосов
/ 31 марта 2020

Я попытался загрузить изображение на 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...