WebAPI du Téléchargement du Fichier - Sans l'écriture de fichiers sur le disque
L'ensemble de la documentation /tutoriels /questions à propos du traitement d'un fichier téléchargé à l'aide de FormData à un ASP.NET WebAPI gestionnaire d'utilisation MultipartFormDataStreamProvider
pour traiter le multipart flux de split dans les champs de formulaire et les fichiers.
var root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
await Request.Content.ReadAsMultipartAsync(provider);
foreach (MultipartFileData file in provider.FileData)
{
//File
}
Toutefois, les fichiers sont automatiquement enregistrés dans un répertoire au cours de processsing.
Il semble que beaucoup de tracas quand je pouvais HttpContext.Current.Request.Files[0].InputStream
pour accéder à un fichier donné flux directement en mémoire.
Comment peut-WebAPI d'accéder simplement le flux de fichier directement, sans IO généraux de l'aide MultipartFormDataStreamProvider
?
Tutoriel officiel: http://www.asp.net/web-api/overview/advanced/sending-html-form-data,-partie-2
- Je pense que Cette Question devrait répondre à vos besoins.
- Merci @JonSusiak - je souhaite que je trouve qu'il y a quelques heures, j'ai fini par faire exactement la même chose en examinant le code source ou
MultipartFormDataStreamProvider
et à l'aide de laMultipartStreamProvider
fournisseur pour me donner de l'upload d'un fichier dans unMemoryStream
plutôt que de l'écrire sur le disque. A été juste en train de rond à l'affichage de la réponse. - pourquoi ne pas vous utilisez
HttpContext.Current.Request.Files[0].InputStream
? Pourriez-vous expliquer l'inconvénient? - Microsoft a vraiment un bon exemple de la façon de télécharger les fichiers: docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/...
Vous devez vous connecter pour publier un commentaire.
Résolu:
Utiliser le simple
MultipartMemoryStreamProvider
. Pas de classes personnalisées ou fournisseurs de services requis. Cette differers de la double question qui a résolu la solution par la rédaction d'un fournisseur personnalisé.Ensuite l'utiliser dans un WebAPI gestionnaire de la manière suivante:
boundary
et d'autres trucs de fantaisie dans le côté client qui envoie le fichier?MultipartMemoryStreamProvider
n'a pas une API pour accéder aux données de formulaire qui est inclus dans la demande commeMultipartFormDataStreamProvider.FormData
n'.