Отправка файла с помощью RestSharp содержит файлC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Отправка файла с помощью RestSharp содержит файл

Сообщение Anonymous »

Я хочу загрузить файл с помощью Post. При использовании Postman все работает нормально, и файл загружается, как ожидалось, но когда я пробую то же самое с помощью RestSharp, мой файл всегда пуст.
Я делаю что-то не так?
Согласно в официальной документации все правильно.
https://restsharp.dev/docs/next/usage/r ... ding-files
Я нашел следующее: Вопрос по Stackoverflow, но он немного устарел и не соответствует текущей версии RestSharp.
RestSharp AddFile с использованием Stream
Тест:

Код: Выделить всё

    [Fact]
public async Task Upload_ShouldWork()
{
//Arrange
await this._fixture.Login();
FileStream stream = File.OpenRead("C:\\Users\\Franz Seidl\\OneDrive\\Bilder\\testImage.png");
//Act
var result = await this._testClass.Upload(stream, 1, true);
//Assert
result.Should().BeTrue();
}
Клиент:

Код: Выделить всё

public async Task Upload(Stream fileStream, int id, bool force = false)
{
var request = new RestRequest($"{BaseUrl}Upload/{{id}}");
var fileParam = FileParameter.Create("upload",() => fileStream,"upload.png");

request.AddUrlSegment("id", id.ToString());
request.AddQueryParameter("force", force.ToString());
request.AddFile("upload.png", () => fileStream,"upload.png", ContentType.Binary);
var result = await this._client.PostAsync(request);
return result;
}
Верхний код:

Код: Выделить всё

[HttpPost("Upload/{id}")]
public async Task UploadImage([FromRoute] int id, [FromQuery] bool force=false)
{
try
{
if (Request.ContentLength == 0 && Request.Body != null) throw new ArgumentException("No file provided");
var fileStream = Request.Body;
var result = await this._service.Upload(fileStream,id,force);
return result;
}
catch (ArgumentException e)
{
var errorDTO = this._exceptionHandler.HandleExceptionAndCreateDTO(e);
return this.BadRequest(errorDTO);
}
catch (Exception e)
{
var errorDTO = this._exceptionHandler.HandleExceptionAndCreateDTO(e);
return StatusCode(StatusCodes.Status500InternalServerError, errorDTO);
}
}
Я также пытался отправить запрос на Postman MockServer, результат можно увидеть ниже.

Еще одна интересная деталь при отправке запроса на почтальона: Request.ContentLength равен 1444 то же значение, что и FileStream.
Но при отправке с помощью RestSharp Request.Content равен 1643.
Возможно, файл закодирован неправильно.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ntain-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Метод не найден: RestSharp.IRestReuqest RestSharp.RestRequest.AddFile
    Anonymous » » в форуме C#
    0 Ответы
    76 Просмотры
    Последнее сообщение Anonymous
  • Restsharp - Deserialize Json -ответ с неверным именем ключа (содержит период)
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Restsharp - Deserialize Json -ответ с неверным именем ключа (содержит период)
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Загрузите файл через POST с помощью RestSharp.
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Загрузите файл через пост с помощью RestSharp
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»