Добавьте пары ключ-значение в MultipartFormDataContent - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь загрузить файл и несколько пар ключ-значение на сервер.

ИТ-специалист сервера говорит мне: «Когда наш сервер получает запрос, файл отображается великолепно, но ни одна из данных в ваших парах ключ-значение не отображается в запросе (так как он анализируетсяASP.Net). Я еще точно не определился, что происходит с этим, но я подозреваю, что он похоронен, находясь в объекте dataContent на один уровень глубже в объекте содержимого. "

Код, который я использую ниже.Как я могу переместить пары ключ-значение «на уровень»?К сожалению, я не очень разбираюсь в работе с сетями.

using (var content = new MultipartFormDataContent())
{
    var dataContent = new FormUrlEncodedContent(new[]
    {
        new KeyValuePair<string, string>("Key1", "Value1"),
        new KeyValuePair<string, string>("Key2", "Value2")
    });
    content.Add(dataContent);

    using (var fileStream = File.OpenRead(filePathAndName))
    using (var fileStreamContent = new StreamContent(fileStream))
    {
        fileStreamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
        {
            Name = "File",
            FileName = Path.GetFileName(filePathAndName)
        };
        fileStreamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        content.Add(fileStreamContent);
        using (var response = await client.PostAsync("api/datasets", content))
        {
            if (response.IsSuccessStatusCode)
            {
                Debug.WriteLine("Upload Success");
            }
            else
            {
                Debug.WriteLine("Upload Failed");
                Debug.WriteLine("Response : " + response);
            }
        }
    }
}

Вместо использования FormUrlEncodedContent я также попытался

content.Add(new StringContent("Value1"), "\"Key1\"");
content.Add(new StringContent("Value2"), "\"Key2\"");

, но не повезло

1 Ответ

0 голосов
/ 29 октября 2018

Оказывается, проблема была на стороне сервера

...