Mvc: Como salvar IFormFile na tabela SQLServer FileStream

Criado em 7 jul. 2016  ·  3Comentários  ·  Fonte: aspnet/Mvc

Então, ou ninguém tentou fazer isso ainda ou eu simplesmente não estou encontrando nada nele. A maneira antiga de fazer upload de um arquivo é esta:

`` `c #
public class FileStorage
{
string pública FileName {get; definir; }
public byte [] FileStore {get; definir; }
}


``` 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");
}

Sei que o .Net Core usa IFormFile, mas todos os recursos que encontrei para salvá-lo falam em salvá-lo na pasta wwwroot do servidor web. Estou passando com sucesso o arquivo para o meu controlador, mas não consigo descobrir como convertê-lo em byte [] para salvar na tabela DB FileStream.

question

Todos 3 comentários

IFormFile tem um método CopyTo(Stream) nele. A mudança para ele não seria muito semelhante ao que você tem aqui?

Obrigado pela sua resposta rápida. Tentei usar isso logo depois que você comentou e a princípio pensei que não poderia encontrar porque não estávamos executando a versão mais recente do núcleo .net. Instalei o mais recente e atualizei meu projeto para usar o tempo de execução mais recente, mas CopyTo não parece ser uma opção para IFormFile.
code

Se alguma das informações abaixo ajudar, eu realmente poderia usar sua ajuda para me apontar na direção certa.
Solução DNX SDK versão: 1.0.0-rc1-update2

dnx --version
Ambiente de execução Microsoft .NET
Versão: 1.0.0-rc1-16609
Tipo: Clr
Arquitetura: x86
Nome do SO: Windows
Versão do sistema operacional: 6.3
Id de tempo de execução: win81-x86

Versão atual do dnvm (padrão): 1.0.0-rc1-update2 clr

VS Pro 2015, atualização 3

O método foi introduzido como parte do RC2, o que explica por que você não o está vendo. A atualização deve resolver esse problema. Isso deve você considerar mudar de dnx -> dotnet. O primeiro não é mais compatível e os pacotes RC2 e posteriores podem não ser mais compatíveis com dnx (consulte https://github.com/aspnet/Announcements/issues/176).

Esta página foi útil?
0 / 5 - 0 avaliações