Dont set the Content-Disposition header. Instead, set the
Response.ContentType = "application/pdf"
Everything else looks ok.
i havent palyed with SQL 2005 yet, but just a shot in the dark, you
said you were storing the data in SQL as image datatype. I think you
should try binary datatype.
thats how it was in sql2k at least, not sure if the same still holds
true to sql2005
Thus wrote GJK,
> Hello,
> I am trying to download a pdf file using HTTPWebRequest class and then
[quoted text clipped - 13 lines]
> binByte = objMemoryStream.ToArray()
> return binByte
This will likely destroy any PDF file. You're handling PDF as UTF-16 encoded
text, but it's just binary content. Discard the StreamReader and read directly
from the response stream.
> Then I write store the binByte to an image datatype column in SQL
> Server which works.
[quoted text clipped - 5 lines]
> Response.AddHeader("Content-Disposition","attachment;filename=" +
> fileName);
I'm nitpicking, but use AppendHeader(). AddHeader() is an ASP legacy API.
Also, set the HTTP Content-Type header for PDF:
Response.ContentType = "application/pdf";
> Response.OutputStream.Write(bteContent, 0, bteContent.Length);
> Response.Flush();
> Response.End();
> Any idea what is wrong with the code?
No, that looks fine.
> Note: One thing I noticed during debugging:
> theResponse.contentlength=22069 where as objMemoryStream.Length
> =21890.
> Does this has to do something with pdf corruption. Why is this
> difference?
See above. PDF isn't UTF-16 encoded text.
Cheers,

Signature
Joerg Jooss
news-reply@joergjooss.de
GJK - 15 Feb 2006 14:13 GMT
Thanks for all the replies. I changed the code as follows and it is
working fine.
Dim binByte As Byte()
Dim myBinaryReader As BinaryReader = New
BinaryReader(theResponse.GetResponseStream)
binByte = myBinaryReader.ReadBytes(theResponse.ContentLength)
myBinaryReader.Close()
return binByte