codewarrior
codewarrior

Reputation: 193

downloaded pdf file not opening

I am saving a pdf file in the database by the following code

        string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
        string filetype = Path.GetExtension(FileUpload1.PostedFile.FileName);

        int filesize = FileUpload1.PostedFile.ContentLength;


        Stream fs = FileUpload1.PostedFile.InputStream;
        BinaryReader br = new BinaryReader(fs);
        byte[] content = br.ReadBytes((Int32)fs.Length);



        Objects.Insert_FilesToDatabase(filename, filetype, content,filesize);

and then, Iam trying to save the file from the database by clicking the link thru the following code.

     void lnkDownload_Click(object sender, EventArgs e)
    {

        string filetype = Objects.GetFileType(Convert.ToInt32(txtslno.Text.Trim()));
        string filename=Objects.GetFileName(Convert.ToInt32(txtslno.Text.Trim()));
        int filesize = Objects.GetFileLength(Convert.ToInt32(txtslno.Text.Trim()));
        byte[] bytfile = new byte[filesize+1000];

        Response.Clear();
        Response.Buffer = true;

        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition",attachment;filename="+filename+".pdf");
        Response.BufferOutput = true;
        Response.Charset = "";

        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.BinaryWrite(bytfile);

        Response.End();

    }

Thru this code, I am able to download the pdf file but I am unable to open the pdf file. The error is the file is not decoded properly. Can you help me as to where am I going wrong?

Upvotes: 2

Views: 5802

Answers (1)

codewarrior
codewarrior

Reputation: 193

I solved this problem thru the following code..

        byte[] bytfile = Objects.GetFile(Convert.ToInt32(txtslno.Text.Trim()));
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.ContentType = "application/pdf";
        Response.AddHeader("Content-Disposition", "attachment;filename="+filename);
        Response.AddHeader("Content-Length", bytfile.Length.ToString());
        Response.OutputStream.Write(bytfile, 0, bytfile.Length);
        Response.Flush();
        Response.End();

I am just not writing the binary content to the output pdf stream in my previous code.. Thank you for your support

Upvotes: 2

Related Questions