Tu dois pas être très loin du compte, le code semble correct mais il manque peut-être quelques en-têtes...
Pour commencer, vérifie la réponse pour voir si le serveur ne renvoie pas une erreur :
1 2 3
| var httpClient = new HttpClient();
var response = await httpClient.PostAsync(uri, content);
response.EnsureSuccessStatusCode(); |
Regarde les détails de l'exception (message, InnerException, statut de la réponse etc) s'il y en a une.
Ensuite, tu peux essayer de spécifier les en-têtes suivants :
- Content-Length (taille du fichier) (je pense que c'est fait automatiquement par StreamContent, mais tu peux toujours essayer de le spécifier manuellement)
- Content-Disposition : pour indiquer le nom du fichier.
1 2 3 4 5 6 7 8 9 10 11
|
var httpClient = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, uri);
request.Content = content;
request.Content.Headers.ContentLength = (ulong)stream.Length;
request.Content.ContentDisposition = new HttpContentDispositionHeaderValue("attachment")
{
FileNameStar = file.Name
};
var response = await httpClient.SendAsync(request);
response.EnsureSuccessStatusCode(); |
(FileNameStar est pareil que FileName, mais utilise un encodage particulier qui permet de mieux supporter les caractères internationaux, genre accents, cédilles etc ; si le serveur ne le supporte pas, utilise FileName à la place)
Partager