Existe-t-il une classe, une bibliothèque ou un morceau de code qui m'aidera à télécharger des fichiers avec HTTPWebrequest ?
Modifier 2:
Je ne veux pas télécharger vers un dossier WebDAV ou quelque chose comme ça. Je veux simuler un navigateur, tout comme vous téléchargez votre avatar sur un forum ou téléchargez un fichier via un formulaire dans une application Web. Téléchargez vers un formulaire qui utilise un multipart / form-data.
Éditer:
WebClient ne couvre pas mes besoins, je recherche donc une solution avec HTTPWebrequest .
.net
upload
httpwebrequest
dr. mal
la source
la source
Réponses:
Pris le code ci-dessus et corrigé car il génère une erreur de serveur interne 500. Il y a quelques problèmes avec \ r \ n mal positionnés et des espaces, etc. Voici le résultat:
et exemple d'utilisation:
Il peut être étendu pour gérer plusieurs fichiers ou simplement l'appeler plusieurs fois pour chaque fichier. Cependant, il convient à vos besoins.
la source
"\r\n--" + boundary + "--\r\n"
sinon les fichiers supplémentaires seront coupés.Je cherchais quelque chose comme ça, trouvé dans: http://bytes.com/groups/net-c/268661-how-upload-file-via-c-code (modifié pour être correct):
la source
MISE À JOUR: Utilisation de .NET 4.5 (ou .NET 4.0 en ajoutant Microsoft.Net.Http package de NuGet), cela est possible sans code externe, extensions et manipulation HTTP de «bas niveau». Voici un exemple:
la source
Ma FAQ sur le téléchargement ASP.NET contient un article à ce sujet, avec un exemple de code: Téléchargez des fichiers à l'aide d'une demande POST RFC 1867 avec HttpWebRequest / WebClient . Ce code ne charge pas les fichiers en mémoire (contrairement au code ci-dessus), prend en charge plusieurs fichiers et prend en charge les valeurs de formulaire, la définition des informations d'identification et des cookies, etc.
Edit: on dirait qu'Axosoft a descendu la page. Merci les gars.
Il est toujours accessible via archive.org.
la source
Sur la base du code fourni ci-dessus, j'ai ajouté la prise en charge de plusieurs fichiers et le téléchargement direct d'un flux sans avoir besoin d'un fichier local.
Pour télécharger des fichiers vers une URL spécifique, y compris certains paramètres de publication, procédez comme suit:
Pour améliorer encore plus, on pourrait déterminer le nom et le type MIME à partir du fichier lui-même.
la source
quelque chose comme ça est proche: (code non testé)
la source
Je pense que vous cherchez quelque chose de plus comme WebClient .
Plus précisément, UploadFile () .
la source
Pris ce qui précède et modifié il accepte certaines valeurs d'en-tête et plusieurs fichiers
la source
\r\n--" + boundary + "--\r\n
Exemple VB (converti à partir de l'exemple C # sur un autre article):
la source
J'ai dû gérer cela récemment - une autre façon de l'aborder est d'utiliser le fait que WebClient est héritable et de changer la demande Web sous-jacente à partir de là:
http://msdn.microsoft.com/en-us/library/system.net.webclient.getwebrequest(VS.80).aspx
Je préfère C #, mais si vous êtes coincé avec VB, les résultats ressembleront à ceci:
la source
Il y a un autre exemple de travail avec certains de mes commentaires:
Et il y a un exemple d'utilisation:
la source
Je cherchais à télécharger des fichiers et à ajouter des paramètres à une demande multipart / form-data dans VB.NET et non via un post régulier. Grâce à la réponse @JoshCodes, j'ai obtenu la direction que je cherchais. Je publie ma solution pour aider les autres à trouver un moyen d'effectuer une publication avec un fichier et des paramètres l'équivalent html de ce que j'essaie de réaliser est: html
Étant donné que je dois fournir l'apiKey et la signature (qui est une somme de contrôle calculée des paramètres de demande et de la chaîne concaténée de la clé api), je devais le faire côté serveur. L'autre raison pour laquelle je devais le faire côté serveur est le fait que la publication du fichier peut être effectuée à tout moment en pointant vers un fichier déjà sur le serveur (en fournissant le chemin d'accès), donc il n'y aurait pas de fichier sélectionné manuellement pendant le formulaire poster ainsi le fichier de données du formulaire ne contiendrait pas le flux de fichiers.Sinon, j'aurais pu calculer la somme de contrôle via un rappel ajax et soumettre le fichier via la publication html à l'aide de JQuery. J'utilise .net version 4.0 et je ne peux pas mettre à niveau vers 4.5 dans la solution actuelle. J'ai donc dû installer Microsoft.Net.Http à l'aide de nuget cmd
la source
Code @CristianRomanescu modifié pour fonctionner avec le flux de mémoire, accepter le fichier comme un tableau d'octets, autoriser le nvc nul, renvoyer la réponse de la demande et travailler avec l'en-tête d'autorisation. Testé le code avec Web Api 2.
Code de test:
la source
Pour moi, les travaux suivants (principalement inspirés de toutes les réponses suivantes), je suis parti de la réponse d'Elad et modifier / simplifier les choses pour répondre à mes besoins (supprimer les entrées de formulaire non fichier, un seul fichier, ...).
J'espère que cela peut aider quelqu'un :)
(PS: je sais que la gestion des exceptions n'est pas implémentée et elle suppose qu'elle a été écrite dans une classe, donc j'ai peut-être besoin d'efforts d'intégration ...)
la source
Je ne sais pas si cela a été publié auparavant, mais j'ai réussi à le faire fonctionner avec WebClient. j'ai lu la documentation du WebClient. Un point clé qu'ils font est
Donc, tout ce que j'ai fait était wc.QueryString.Add ("source", generateImage) pour ajouter les différents paramètres de requête et en quelque sorte cela correspond au nom de la propriété avec l'image que j'ai téléchargée. J'espère que ça aide
la source
J'ai écrit une classe en utilisant WebClient en arrière quand faire un téléchargement de formulaire en plusieurs parties.
http://ferozedaud.blogspot.com/2010/03/multipart-form-upload-helper.html
Cela fonctionnera avec toutes les versions du framework .NET.
la source
Je ne parviens jamais à faire fonctionner correctement les exemples, je reçois toujours une erreur 500 lors de l'envoi au serveur.
Cependant, je suis tombé sur une méthode très élégante de le faire dans cette URL
Il est facilement extensible et fonctionne évidemment avec les fichiers binaires ainsi que XML.
Vous l'appelez en utilisant quelque chose de similaire à celui-ci
la source
Découvrez la bibliothèque MyToolkit:
http://mytoolkit.codeplex.com/wikipage?title=Http
la source
Utilisation du client convertir le fichier en
ToBase64String
, après utilisation de Xml pour la promulgation en appel de serveur, cette utilisation du serveurFile.WriteAllBytes(path,Convert.FromBase64String(dataFile_Client_sent))
.Bonne chance!
la source
Cette méthode fonctionne pour télécharger plusieurs images simultanément
la source
Je me rends compte que c'est probablement très tard, mais je cherchais la même solution. J'ai trouvé la réponse suivante d'un représentant Microsoft
la source