Restsharp: RestRequest.AddFile не работает

Созданный на 1 нояб. 2010  ·  13Комментарии  ·  Источник: restsharp/RestSharp

похоже, что добавление файла в RestRequest не работает.

ResponseStatus установлен как Ошибка.

сообщение response.Error: «Количество байтов, которые должны быть записаны в поток, превышает указанный размер Content-Length в байтах».

перед записью в поток необходимо обновить длину содержимого.

Самый полезный комментарий

Это было моим решением обойти эту ошибку:

var req = GetRestRequest("Upload", Method.POST, null);
//req.AddFile("file",
//    (s) => {
//        var stream = input(imageObject);
//        stream.CopyTo(s);
//        stream.Dispose();
//    },
//    fileName, contentType);

req.Files.Add(new FileParameter {
    Name = "file",
    Writer = (s) => {
        var stream = input(imageObject);
        stream.CopyTo(s);
        stream.Dispose();
    },
    FileName = fileName,
    ContentType = contentType,
    ContentLength = contentLength
});   

Все 13 Комментарий

скорее всего, изменения Content-Length для работы с .NET не тестировались с файлами, и заголовок установлен неправильно. спасибо за отчет.

попробуйте еще раз с последними изменениями jonfuller и скажите мне, если это все еще не работает

я считаю, что это решено. пожалуйста, проверьте и сообщите, если нет.

Проблема вернулась.
В версии 105.2.3 (текущая стабильная на nuget) с размером файла ~ 3,5 МБ.

После перехода на 105.1.0 все работает нормально.

На StackOverflow есть похожий

Я думаю, что это связано с другой ошибкой № 769 и № 742, позвольте мне исправить это, и мы посмотрим, что произойдет. Что-то случилось с длиной контента.

Есть какие-нибудь новости по этому поводу?

шишка - кажется, все еще проблема

да, у меня тоже проблемы с этим, даже возврат к 105.1.0 не помог

Все еще не решено.

У меня аналогичная проблема с более новыми версиями restsharp
когда используешь
req.AddFile ("вызов [атрибуты изображения] [файл]", (s) => imageStream.CopyTo (s), GetRandomFileName ("jpg"), "изображение / jpeg");

Не работает в более новых версиях

но если я использую
req.AddFile («вызов [атрибуты изображения] [файл]», imageStream.GetBytes (), GetRandomFileName («jpg»), «изображение / jpeg»);

с участием

    public static byte[] GetBytes(this Stream s)
    {
        using (var ms = new MemoryStream())
        {
            s.CopyTo(ms);
            return ms.ToArray();
        }
    }

оно работает.

поэтому использование потока с помощью imageStream.CopyTo не работает, а отправка byte [] работает

Это было моим решением обойти эту ошибку:

var req = GetRestRequest("Upload", Method.POST, null);
//req.AddFile("file",
//    (s) => {
//        var stream = input(imageObject);
//        stream.CopyTo(s);
//        stream.Dispose();
//    },
//    fileName, contentType);

req.Files.Add(new FileParameter {
    Name = "file",
    Writer = (s) => {
        var stream = input(imageObject);
        stream.CopyTo(s);
        stream.Dispose();
    },
    FileName = fileName,
    ContentType = contentType,
    ContentLength = contentLength
});   

RestRequest.AddFile не готов для .NET Core? Я вижу, что для методов AddFile интерфейса есть директива компилятора #if FRAMEWORK. Я думаю, что обходной путь варианта использования, но модульный тест будет проблемой.

Пока нет версии для .NET Core. Просматривайте открытые вопросы, чтобы следить за прогрессом.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги