Mvc: Comment enregistrer IFormFile dans la table FileStream de SQLServer

Créé le 7 juil. 2016  ·  3Commentaires  ·  Source: aspnet/Mvc

Donc, soit personne n'a encore essayé de le faire, soit je ne trouve rien là-dessus. L'ancienne façon de télécharger un fichier est la suivante :

``` c#
classe publique FileStorage
{
chaîne publique NomFichier { get; ensemble; }
public byte[] FileStore { get; ensemble; }
}


``` c#
[HttpPost]
 [ValidateAntiForgeryToken]
 public async Task<ActionResult> Create(HttpPostedFileBase file)
 {
     FileStorage fileAttachment = new FileStorage();

      using (Stream inputStream = file.InputStream)
      {
          MemoryStream memoryStream = inputStream as MemoryStream;

          //Check to see if stream returned is already a MemoryStream
          if(memoryStream == null)
          {
              memoryStream = new MemoryStream();
              inputStream.CopyTo(memoryStream);
           }

           fileAttachment.FileStore = memoryStream.ToArray();
           fileAttachment.FileName = file.FileName;
           }

           if (ModelState.IsValid)
           {
               db.FileAttachment.Add(fileAttachment);
               await db.SaveChangesAsync();
               return RedirectToAction("Index");
           }

           return RedirectToAction("Index");
}

Je sais que .Net Core utilise IFormFile mais toutes les ressources que j'ai trouvées pour l'enregistrer parlent de l'enregistrer dans le dossier wwwroot sur le serveur Web. Je transmets avec succès le fichier à mon contrôleur, mais je n'ai pas réussi à comprendre comment le convertir en octet [] pour l'enregistrer dans la table DB FileStream.

question

Tous les 3 commentaires

IFormFile contient une méthode CopyTo(Stream) . Le passage à celui-ci ne ressemblerait-il pas assez à ce que vous avez ici ?

Merci pour votre réponse rapide. J'ai essayé de l'utiliser juste après votre commentaire et au début, j'ai pensé que je ne pouvais pas le trouver car nous n'exécutions pas la dernière version de .net core. J'ai installé le dernier et mis à jour mon projet pour utiliser le nouveau runtime, mais CopyTo ne semble pas être une option pour IFormFile.
code

Si l'une des informations ci-dessous m'aide, je pourrais vraiment utiliser votre aide pour me diriger dans la bonne direction.
Version du SDK DNX de la solution : 1.0.0-rc1-update2

dnx --version
Environnement d'exécution Microsoft .NET
Version : 1.0.0-rc1-16609
Type : Clr
Architecture : x86
Nom du système d'exploitation : Windows
Version du système d'exploitation : 6.3
Identifiant d'exécution : win81-x86

Version actuelle de dnvm (par défaut) : 1.0.0-rc1-update2 clr

VS Pro 2015 Mise à jour 3

La méthode a été introduite dans le cadre de RC2 qui explique pourquoi vous ne la voyez pas. La mise à jour devrait résoudre ce problème. Cela devrait vous devriez envisager de passer de dnx -> dotnet. Le premier n'est plus pris en charge et les packages RC2 et ultérieurs pourraient ne plus être compatibles avec dnx (voir https://github.com/aspnet/Announcements/issues/176).

Cette page vous a été utile?
0 / 5 - 0 notes