Bank Image Download with ASP.NET MVC5

1

I'm saving images to the database in varbinary format.

byte[] arrayImagem = null;

using (MemoryStream memoryStream = new MemoryStream())
{
    novaSolicitacao.Anexos.InputStream.CopyTo(memoryStream);
    arrayImagem = memoryStream.ToArray();

    aberturaOcorrenciaDao.EnviaAnexosDaOcorrenciaSustentacao(Convert.ToString(numOcorrencia), 
        arrayImagem, novaSolicitacao.Anexos.FileName, novaSolicitacao.Anexos.ContentType, novaSolicitacao.IdSolicitante);

    arrayImagem = null;
}

But I can not retrieve this image from the bank and make it available for download. Something very simple, an action that takes the result in varbinary of the bank and assembles the image and returns with an action of type FileResult.

My return would look something like this:

        public FileResult DownloadAnexoOcorrencia(string idArquivo)
    {
        var dao = new EditarOcorrenciaDAO();

        //Busca os bytes do arquivo no banco
        var arquivo = dao.BuscaAnexoEspecifico(idArquivo);

        //Aqui entra a função para converter esses bytes em imagem

        return File();
    }

DAO Query:

        public AnexosOcorrencia BuscaAnexoEspecifico(string id)
    {
        var select = dao.conexao.CreateCommand();
        select.CommandText = "select * from TB_Ocorrencia_Arquivo where idArquivo = @idArquivo";

        var paramIdOcorrencia = new SqlParameter("idArquivo", id);
        select.Parameters.Add(paramIdOcorrencia);

        var resultado = select.ExecuteReader();
        resultado.Read();

        var anexo = new AnexosOcorrencia();
        anexo.IdArquivo = Convert.ToString(resultado["idArquivo"]);
        anexo.IdOcorrencia = Convert.ToString(resultado["idOcorrencia"]);
        anexo.NomeArquivo = Convert.ToString(resultado["nmArquivo"]);
        anexo.TipoArquivo = Convert.ToString(resultado["TipoArquivo"]);

        anexo.Arquivo = (byte[])(resultado["Arquivo"]);


        resultado.Close();

        return anexo;
    }

View that calls the function in Controller:

 <div class="col-md-3">
            <label style="background-color: #eee;">Documentos anexados - Solicitante:</label>
            @*<input type="text" class="form-control input-sm" readonly value='@ViewBag.DadosOcorrencia.PosicaoTorre' />*@
            @foreach (var anexo in ViewBag.Anexos)
            {
                <div class="col-md-12 row" id="@anexo.IdArquivo">
                    <a onclick="DownloadArquivo(@anexo.IdArquivo)" style="cursor: pointer;">
                        <span>@anexo.NomeArquivo</span>
                    </a>
                </div>
            }
        </div>
    function DownloadArchive (value) {         var urlDownload = '@ Url.Action ("DownloadAnexoOcorrencia", "EditOcorrencia")';         $ .post (urlDownload, {idFile: value});     }     
asked by anonymous 11.06.2018 / 17:12

0 answers