Oi,
Estou tentando fazer o upload de várias partes funcionar com a v105.2.3, mas parece que há algo errado com o Content-Length.
using (FileStream source = File.Open(path, FileMode.Open))
{
RestSharp.RestRequest request2 = new RestSharp.RestRequest();
request.Resource = $"/files/uploads/{UploadId}";
request.Method = Method.POST;
request.AddFile(filename, source.CopyTo, filename);
request.AlwaysMultipartFormData = true;
IRestResponse<UploadResponse> response2 = this.Client.Execute<UploadResponse>(request);
if ((int)response2.StatusCode != 201)
{
throw new Exception(response2.StatusDescription);
}
}
O response2 tem esta mensagem de erro (está em alemão e significa que a solicitação foi cancelada):
_Die Anfrage wurde abgebrochen: Die Anfrage wurde abgebrochen .._
Exceção interna (não é possível fechar o fluxo até que todos os bytes sejam gravados):
_Stream kann nicht geschlossen werden, bevor alle Bytes geschrieben wurden._
No Fiddler, recebo o seguinte:
Pedido - Entidade
Content-Length: 210
Content-Type: multipart/form-data; boundary=-----------------------------28947758029299
Resposta
HTTP/1.1 408 Request body incomplete
The request body did not contain the specified number of bytes. Got 159, expected 210
Preciso usar o pacote Nuget com esta versão, pois tenho outros pacotes (como RestSharp.Newtonsoft.Json) que requerem esta versão.
Parece o mesmo problema aqui:
https://github.com/restsharp/RestSharp/issues/742
Atenciosamente,
Alex
Oi Alex,
Eu tenho o mesmo problema. Você resolveu ou trabalhou ao redor?
Atenciosamente,
Maurice
Eu tive o mesmo problema e resolvi usando o método request.Files.Add () em vez de AddFile () assim:
request.Files.Add(new FileParameter
{
Name = "fileAttach",
Writer = (s) =>
{
FileStream stream = File.Open(_attachment.path, FileMode.Open);
stream.CopyTo(s);
stream.Dispose();
},
FileName = _attachment.name,
ContentType = _attachment.contentType,
ContentLength = _attachment.size
});
Você pode usar AddFile
mas você precisa especificar o comprimento do conteúdo, há um parâmetro para isso.
Comentários muito úteis
Eu tive o mesmo problema e resolvi usando o método request.Files.Add () em vez de AddFile () assim: