Arindam Rudra
Arindam Rudra

Reputation: 624

File downloading strange issue

I saved the document file/pdf file or txt file in the database. Now to get that File I am using the code below.

JobApplicantResume oApplicantResumne = new JobApplicantResume();
DataSet dsApplicantResume = oApplicantResumne.GetJobApplicantResumeByJobApplicantResumeId(1552);//1552 Long value
Response.ClearContent();
Response.ClearHeaders();
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/xx-xxxx";
Response.AddHeader("Content-Disposition", "attachment;filename=" + dsApplicantResume.Tables[0].Rows[0]["sFileName"].ToString());
//Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Byte[] bytes = (Byte[])dsApplicantResume.Tables[0].Rows[0]["binFile"];
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();

It is giving the exact file. No problem is there to open the file.

In some other page I used the same code:

JobApplicantResume oApplicantResumne = new JobApplicantResume();
DataSet dsApplicantResume = oApplicantResumne.GetJobApplicantResumeByJobApplicantResumeId(1552);//1552 Long value
Response.ClearContent();
Response.ClearHeaders();
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/xx-xxxx";
Response.AddHeader("Content-Disposition", "attachment;filename=" + dsApplicantResume.Tables[0].Rows[0]["sFileName"].ToString());
//Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Byte[] bytes = (Byte[])dsApplicantResume.Tables[0].Rows[0]["binFile"];
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();

It is also giving a file to download. But when I open it the data are coming in some different format.

Like:

؟½ï؟½ï؟½ï؟½ï؟½ï؟

Junk data. I could not understand why the problem is coming. If any one faced this similar kind of issue or any suggestion / help will be very much helpful to overcome this problem.

Thanks a lot for your attention.

Upvotes: 3

Views: 350

Answers (1)

Alexandr
Alexandr

Reputation: 876

Try to add Unicode Byte-Order-Mark full example.

    //add the BOM
    byte[] bBOM = new byte[] { 0xEF, 0xBB, 0xBF };
    byte[] bContent = ms.ToArray();
    byte[] bToWrite = new byte[bBOM.Length + bContent.Length];

    //combile the BOM and the content
    bBOM.CopyTo( bToWrite, 0 );
    bContent.CopyTo( bToWrite, bBOM.Length );

    //write to the client
    HttpContext.Current.Response.Write( Encoding.UTF8.GetString( bToWrite ) );
    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.End();

Upvotes: 1

Related Questions