Enregistrer MultipartFileData fichier sur le disque
J'ai le soufflet de code que j'ai vu dans d'autres threads ici, mais nulle part il n'est fait de montrer comment enregistrer une MultipartFileData fichier sur le disque une fois que vous l'avez.
[HttpPost]
public Task<HttpResponseMessage> PostFormData()
{
//Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
string root = HttpContext.Current.Server.MapPath(Settings.AssetImageTempStorage);
var provider = new MultipartFormDataStreamProvider(root);
//Read the form data and return an async task.
var task = Request.Content.ReadAsMultipartAsync(provider).
ContinueWith<HttpResponseMessage>(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
}
//This illustrates how to get the file names.
foreach (MultipartFileData file in provider.FileData)
{
//HOW DO I SAVE THIS FILE TO DISK HERE ???
Trace.WriteLine(file.Headers.ContentDisposition.FileName);
Trace.WriteLine("Server file path: " + file.LocalFileName);
}
return Request.CreateResponse(HttpStatusCode.OK);
});
return task;
}
Avez-vous regardé ceci question? Il y a une ligne
Grâce mozgow, je l'ai eu à travailler dans une manière similaire. maintenant fonctionne bien, mais dans IE8 et IE9 je reçois la Réponse suivante : HTTP/1.1 415 non pris en charge Type de Média. Dans IE10 est bien, mais inférieur à celui que j'obtiens cette stupide erreur, et je ne sais pas pourquoi.
Désolé, trouvé le problème. J'ai été en utilisant blueimp blueimp.github.io/jQuery-File-Upload/basic.html Fichier uploader. Il est livré avec un iframe fichier JS pour les anciens navigateurs, je n'ai pas. J'ai compris maintenant et il fonctionne très bien.
user2520440 est parti depuis longtemps, mais la question dans le code.. "COMMENT puis-je ENREGISTRER CE FICHIER sur le DISQUE ICI ???" a une réponse simple: Vous N'avez pas Besoin D'. Il a déjà été enregistré .ReadAsMultipartAsync(), c'est ce qui déclenche l'enregistrement.
File.Copy(fileData.LocalFileName, Path.Combine(StoragePath, fileName));
qui, je pense, des copies du fichier reçu à l'emplacement spécifique.Grâce mozgow, je l'ai eu à travailler dans une manière similaire. maintenant fonctionne bien, mais dans IE8 et IE9 je reçois la Réponse suivante : HTTP/1.1 415 non pris en charge Type de Média. Dans IE10 est bien, mais inférieur à celui que j'obtiens cette stupide erreur, et je ne sais pas pourquoi.
Désolé, trouvé le problème. J'ai été en utilisant blueimp blueimp.github.io/jQuery-File-Upload/basic.html Fichier uploader. Il est livré avec un iframe fichier JS pour les anciens navigateurs, je n'ai pas. J'ai compris maintenant et il fonctionne très bien.
user2520440 est parti depuis longtemps, mais la question dans le code.. "COMMENT puis-je ENREGISTRER CE FICHIER sur le DISQUE ICI ???" a une réponse simple: Vous N'avez pas Besoin D'. Il a déjà été enregistré .ReadAsMultipartAsync(), c'est ce qui déclenche l'enregistrement.
OriginalL'auteur | 2013-12-03
Vous devez vous connecter pour publier un commentaire.
Voici un exemple de fichier de sauvegarde dans le serveur. Espérons que cela vous aidera.
File.Move(fileData.LocalFileName, Path.Combine(StoragePath, fileName));
parfois obtenir "Fichier en cours d'utilisation" d'exception.Désolé pour la réponse tardive. Je pense qu'il ne devrait pas obtenir de l'exception de "Fichier en cours d'utilisation". Mais, si vous avez obtenu cette exception, vous pouvez essayer de Fichier.Copier() au lieu de Fichier.Move(). Raison, la méthode de Fichier.Copier() sera exécuté même le fichier source est en cours d'utilisation par un autre processus. Système.IO.Fichier.Copier(@"E:\asd.txt", @"F:\asd_copy.txt", true);
Où puis-je trouver la façon de télécharger les données dans le côté client (.NET)?
Désolé, je n'ai pas votre question?
Oh, désolé. Je ne suis pas en mesure de répondre à ce que je n'ai pas essayé d'autres types. Si vous pouvez expérimenter et de partager vos précieuses conclusions avec nous, il sera très utile pour tous.
OriginalL'auteur Abhilash P A- Pullelil