Quelqu'un sait-il comment utiliser le HttpClient
.Net 4.5 avec le multipart/form-data
téléchargement?
Je n'ai trouvé aucun exemple sur Internet.
Quelqu'un sait-il comment utiliser le HttpClient
.Net 4.5 avec le multipart/form-data
téléchargement?
Je n'ai trouvé aucun exemple sur Internet.
Réponses:
mon résultat ressemble à ceci:
la source
new MultipartFormDataContent(...)
contenait un caractère de limite non valide (peut-être le séparateur "/"). Aucune erreur, juste aucun fichier publié sur le serveur - dans mon cas, Context.Request.Files.Count = 0 dans le contrôleur d'API. Peut-être juste unNancy
problème, mais je suggère d'utiliser quelque chose comme à laDateTime.Now.Ticks.ToString("x")
place.key
etfileName
àcontent
( bilddatei et upload.jpg dans cet exemple).Cela fonctionne plus ou moins comme ceci (exemple en utilisant un fichier image / jpg):
(Vous pouvez
requestContent.Add()
tout ce que vous voulez, jetez un œil au descendant de HttpContent pour voir les types disponibles à transmettre)Une fois terminé, vous trouverez le contenu de la réponse à l'intérieur avec
HttpResponseMessage.Content
lequel vous pouvez consommerHttpContent.ReadAs*Async
.la source
// here you can specify boundary if you need---^
:)async
sur la première ligne etawait
sur la ligne avant la dernière ne sont pas nécessaires.Ceci est un exemple de la façon de publier une chaîne et un flux de fichiers avec HTTPClient à l'aide de MultipartFormDataContent. Le Content-Disposition et le Content-Type doivent être spécifiés pour chaque HTTPContent:
Voici mon exemple. J'espère que ça aide:
la source
MultipartFormDataContent
. Félicitations à vous monsieurContent-Type
etContent-Disposition
c'est OK, mais sur le serveur 2008 R2 (IIS 7.5) je ne trouve pas de fichiers, c'est étrange. Alors je fais comme réponse.Voici un autre exemple d'utilisation
HttpClient
pour télécharger un fichiermultipart/form-data
.Il télécharge un fichier vers une API REST et inclut le fichier lui-même (par exemple un JPG) et des paramètres API supplémentaires. Le fichier est directement téléchargé depuis le disque local via
FileStream
.Voir ici pour l'exemple complet comprenant une logique supplémentaire spécifique à l'API.
la source
Essayez cela, cela fonctionne pour moi.
la source
TestServer.CreatClient()
scénario .NET Core d'un test d'intégration pour un téléchargement de données + fichier.Voici un échantillon complet qui a fonctionné pour moi. La
boundary
valeur de la demande est ajoutée automatiquement par .NET.la source
Exemple avec le préchargeur Dotnet 3.0 Core
la source
la source
J'ajoute un extrait de code qui montre comment publier un fichier dans une API qui a été exposée via le verbe DELETE http. Ce n'est pas un cas courant de télécharger un fichier avec le verbe DELETE http mais c'est autorisé. J'ai supposé l'authentification Windows NTLM pour autoriser l'appel.
Le problème auquel on pourrait faire face est que toutes les surcharges de
HttpClient.DeleteAsync
méthode n'ont pas de paramètres pourHttpContent
la façon dont nous l'obtenons dansPostAsync
methodVous avez besoin des espaces de noms ci-dessous en haut de votre fichier C #:
PS Désolé pour tant de blocs utilisant (modèle IDisposable) dans mon code. Malheureusement, la syntaxe de l'utilisation de la construction de C # ne prend pas en charge l'initialisation de plusieurs variables dans une seule instruction.
la source
la source