Salut,
J'essaie de faire fonctionner le téléchargement en plusieurs parties avec la v105.2.3, mais il semble qu'il y ait un problème avec 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);
}
}
La réponse2 a ce message d'erreur (il est en allemand et signifie que la demande a été annulée.):
_Die Anfrage wurde abgebrochen: Die Anfrage wurde abgebrochen.._
Exception interne (Impossible de fermer le flux tant que tous les octets ne sont pas écrits) :
_Stream kann nicht geschlossen werden, bevor alle Bytes geschrieben wurden._
Dans Fiddler, j'obtiens ceci:
Demande - Entité
Content-Length: 210
Content-Type: multipart/form-data; boundary=-----------------------------28947758029299
Réponse
HTTP/1.1 408 Request body incomplete
The request body did not contain the specified number of bytes. Got 159, expected 210
J'ai besoin d'utiliser le package Nuget avec ces versions car j'ai d'autres packages (comme RestSharp.Newtonsoft.Json) qui nécessitent cette version.
On dirait le même problème ici :
https://github.com/restsharp/RestSharp/issues/742
Meilleures salutations,
Alexis
Salut Alex,
J'ai le même problème. L'avez-vous résolu ou contourné ?
Meilleures salutations,
Maurice
J'ai eu ce même problème et je l'ai résolu en utilisant la méthode request.Files.Add() au lieu de AddFile() comme ceci :
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
});
Vous pouvez utiliser AddFile
mais vous devez spécifier la longueur du contenu, il existe un paramètre pour cela.
Commentaire le plus utile
J'ai eu ce même problème et je l'ai résolu en utilisant la méthode request.Files.Add() au lieu de AddFile() comme ceci :