我现在在做一个文档下载的页面,先将某些文档上传到数据库中,存放在表中的document字段类型是Image!其中有doc,pdf文件。当点击一链接下载时,用语句Response.BinaryWrite((byte[])sdr["document"]);来实现的,奇怪的现象出现了,当是DOC文件时,正常—显示下载或是直接打开窗口;但当是PDF文件时呢,结果是不仅没有下载或打开窗口,而且在新页面居然显示System.Byte[]这段字。非常纳闷,不知道问题出在哪里。
PS:而且我在另外一Project中(实现方式完全一样),PDF文件居然可以直接打开,只是没有提示是否保存或直接打开窗口。
PS:而且我在另外一Project中(实现方式完全一样),PDF文件居然可以直接打开,只是没有提示是否保存或直接打开窗口。
{
string PapID=Request.QueryString["id"].ToString();
SqlConnection con=DBCon.createCon();
string strSQL="select document,doctype from syspaper where papID=";
strSQL+=PapID.ToString();
con.Open();
SqlCommand com=new SqlCommand(strSQL,con);
SqlDataReader sdr=com.ExecuteReader();
if(sdr.Read())
{
Response.ClearHeaders(); //清除缓冲区流中的所有头。
switch((string)sdr["doctype"])
{
case "doc":
Response.ContentType="application/msword";
break;
case "pdf":
Response.ContentType="application/pdf";
break;
}
byte[] buff;
buff=(byte[])sdr["document"];
Response.BinaryWrite( buff ); //将一个二进制字符串写入HTTP输出流
}
************************************************************************************
以上就是代码了,DOC文件就可以,PDF就不行,快疯了!
这前面的"id"是前面一个页面传过来的