J'utilise asp.net mvc 4 webapi beta pour créer un service de repos. Je dois pouvoir accepter les images / fichiers POSTés des applications clientes. Est-ce possible à l'aide de la webapi? Voici comment j'utilise actuellement l'action. Quelqu'un connaît-il un exemple de la façon dont cela devrait fonctionner?
[HttpPost]
public string ProfileImagePost(HttpPostedFile profileImage)
{
string[] extensions = { ".jpg", ".jpeg", ".gif", ".bmp", ".png" };
if (!extensions.Any(x => x.Equals(Path.GetExtension(profileImage.FileName.ToLower()), StringComparison.OrdinalIgnoreCase)))
{
throw new HttpResponseException("Invalid file type.", HttpStatusCode.BadRequest);
}
// Other code goes here
return "/path/to/image.png";
}
c#
asp.net-mvc-4
Phil
la source
la source
Request.Files
Réponses:
voir http://www.asp.net/web-api/overview/formats-and-model-binding/html-forms-and-multipart-mime#multipartmime , bien que je pense que l'article donne l'impression que c'est un peu plus compliqué que ça l'est vraiment.
Fondamentalement,
la source
MultipartFormDataStreamProvider
n'expose plus laBodyPartFileNames
propriété, j'ai utilisé à laFileData.First().LocalFileName
place.Je suis surpris que beaucoup d'entre vous semblent vouloir enregistrer des fichiers sur le serveur. La solution pour tout garder en mémoire est la suivante:
la source
File.WriteAllBytes(filename, buffer);
l'écrire dans un fichierConsultez le code ci-dessous, adapté de cet article , qui illustre l'exemple de code le plus simple que j'ai pu trouver. Il comprend à la fois des téléchargements de fichiers et de mémoire (plus rapides).
la source
La méthode ASP.NET Core est maintenant là :
la source
Voici une solution rapide et sale qui prend le contenu du fichier téléchargé du corps HTTP et l'écrit dans un fichier. J'ai inclus un extrait "bare bones" HTML / JS pour le téléchargement du fichier.
Méthode API Web:
Téléchargement de fichiers HTML:
la source
J'ai utilisé la réponse de Mike Wasson avant de mettre à jour tous les NuGets dans mon projet webapi mvc4. Une fois que je l'ai fait, j'ai dû réécrire l'action de téléchargement de fichier:
Apparemment, BodyPartFileNames n'est plus disponible dans MultipartFormDataStreamProvider.
la source
ReadAsMultipartAsync
et ii) dansFile.Move
? 2) Pourriez-vous faireasync File.Move
?Dans cette même direction, je poste un snipets client et serveur qui envoient des fichiers Excel à l'aide de WebApi, c # 4:
Et le contrôleur webapi du serveur:
Et le MyMultipartFormDataStreamProvider personnalisé, nécessaire pour personnaliser le nom de fichier:
PS: j'ai pris ce code d'un autre article http://www.codeguru.com/csharp/.net/uploading-files-asynchronously-using-asp.net-web-api .htm
la source
static method SetFile
dans votre contrôleur?path
stockage cloud.la source
Voici deux façons d'accepter un fichier. L'une utilisant le fournisseur de mémoire MultipartMemoryStreamProvider et l'autre utilisant MultipartFormDataStreamProvider qui enregistre sur un disque. Remarque, ce n'est que pour un téléchargement de fichier à la fois. Vous pouvez certainement l'étendre pour enregistrer plusieurs fichiers. La deuxième approche peut prendre en charge des fichiers volumineux. J'ai testé des fichiers de plus de 200 Mo et cela fonctionne très bien. L'utilisation de l'approche en mémoire ne vous oblige pas à enregistrer sur le disque, mais supprimera une exception de mémoire si vous dépassez une certaine limite.
la source
J'ai eu un problème similaire pour l'API Web de prévisualisation. Je n'ai pas encore porté cette partie vers la nouvelle API Web MVC 4, mais cela peut peut-être aider:
Téléchargement de fichier REST avec HttpRequestMessage ou Stream?
Veuillez me le faire savoir, pouvez vous asseoir demain et essayer de le mettre en œuvre à nouveau.
la source
Cette question a beaucoup de bonnes réponses même pour .Net Core. J'utilisais les deux Frameworks, les exemples de code fournis fonctionnent bien. Je ne vais donc pas le répéter. Dans mon cas, l'important était de savoir comment utiliser les actions de téléchargement de fichiers avec Swagger comme ceci:
Voici mon récapitulatif:
ASP .Net WebAPI 2
.NET Core
la source
Contrôleur API:
la source
Compléter la réponse de Matt Frear - Ce serait une alternative ASP NET Core pour lire le fichier directement à partir de Stream, sans l'enregistrer et le lire à partir du disque:
la source