none
¿Como guardar un archivo pdf en base de datos (si el documento es creado en C#) y despues obtenerlo de la base de datos por Entity framework? RRS feed

  • Pregunta

  • Hola, saben en mi codigo, tengo esto en la parte de crear el documento

     string nombreDoc = "ACC - N° " + AccidenteID;
       Document doc = new Document(PageSize.LETTER);
       PdfWriter writerPDF = PdfWriter.GetInstance(doc, new System.IO.FileStream(nombreDoc + ".pdf", System.IO.FileMode.Create));
     doc.AddTitle(nombreDoc);
                doc.AddCreator(nombreInvestigador);
                doc.Open();

    // de aqui todo lo que contiene el pdf 

    doc.Close();
    writerPDF.Close();

    de aqui cierro el documento y necesito guardarlo en la base de datos como tipo VARBINARY (MAX), pero no puedo ya que no me lee el archivo y me manda error al colocar esta sentencia:

    Byte[] documento = System.IO.File.ReadAllBytes(writerPDF);

    tambien lo intente de esta manera pero tampoco:

    FileStream fs = new FileStream(doc.ToString(), FileMode.Open, FileAccess.Read);
                byte[] documento = new byte[fs.Length];
                fs.Read(documento, 0, System.Convert.ToInt32(fs.Length));

    martes, 7 de agosto de 2018 20:45

Respuestas

  • Hola!

    Podrías serializar el archivo a una cadena de Base 64 para luego guardarla como si se tratase de un string.

    Algo así más o menos

    // Leer todos los bytes del archivo y luego proceder a  guardarlo como Base64 en un string.
    
    string resultadoObtenido = Convert.ToBase64String(File.ReadAllBytes(nombreDelArchivo));


    Roberto Pozo (colocolino73)
    MVP SQL Server
    Blog: angaroasoft

    Please mark answered if I've answered your question and vote for it as helpful to help other user's find a solution quicker

    martes, 7 de agosto de 2018 20:54

Todas las respuestas

  • Hola!

    Podrías serializar el archivo a una cadena de Base 64 para luego guardarla como si se tratase de un string.

    Algo así más o menos

    // Leer todos los bytes del archivo y luego proceder a  guardarlo como Base64 en un string.
    
    string resultadoObtenido = Convert.ToBase64String(File.ReadAllBytes(nombreDelArchivo));


    Roberto Pozo (colocolino73)
    MVP SQL Server
    Blog: angaroasoft

    Please mark answered if I've answered your question and vote for it as helpful to help other user's find a solution quicker

    martes, 7 de agosto de 2018 20:54
  • Buenas!

    sabes tengo otra duda, tengo la sentencia asi, pero quiero guardarla en la base de datos, en la tabla Archivo, docAcc (Tipo VARBINARY (MAX), Pero no se como poder hacerlo

                PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"C:\Archivos" + nombreDoc, FileMode.Create));

    Sabes como puedo hacerlo?? 

    martes, 7 de agosto de 2018 21:41