我现在是这样做的,在保存文件到数据库的时候,用一个专门的字段存储文件的后缀,从数据库读出来,判断一下文件类型,给Response.ContentType的属性赋值,代码如下:
//根据文件的后缀名返回处理文件的程序头。
private string open_file_application(string str_file_type)
{
string str_result="";
switch (str_file_type)
{
//word文档
case "doc":
{
str_result="application/msword";
break;
}
//文本文档
case "txt":
{
str_result="text/plain";
break;
}
//gif图像文档
case "gif":
{
str_result="image/gif";
break;
}
//Excel文档
case "xls":
{
str_result="application/vnd.ms-excel";
break;
}
//网页文档
case "html":
{
str_result="text/html";
break;
}
case "htm":
{
str_result="text/html";
break;
}
//无法识别的文档
default:
{
str_result="Application/unknown";
break;
}
}
return str_result;
}
//根据文件的后缀名返回处理文件的程序头。
private string open_file_application(string str_file_type)
{
string str_result="";
switch (str_file_type)
{
//word文档
case "doc":
{
str_result="application/msword";
break;
}
//文本文档
case "txt":
{
str_result="text/plain";
break;
}
//gif图像文档
case "gif":
{
str_result="image/gif";
break;
}
//Excel文档
case "xls":
{
str_result="application/vnd.ms-excel";
break;
}
//网页文档
case "html":
{
str_result="text/html";
break;
}
case "htm":
{
str_result="text/html";
break;
}
//无法识别的文档
default:
{
str_result="Application/unknown";
break;
}
}
return str_result;
}
解决方案 »
- 超高分一个CRM系统的原代码,小弟谢了.分全在这里了.
- 关于 FreeTextBox 出错的问题。
- 关于<identity impersonate="false">和<identity impersonate="true">
- vs2005中的错误处理(高手快来帮忙啊)
- 小妹急,请各位大侠帮帮忙!
- 为何这样写改不了DataSet的值??
- 关于confirm的问题,高手请进!
- Downlist事件 急急急急急急急急急急急急急急急急急急急急急急!!!!!!!!!!!!!!!!!!!!!!
- 关于二进制文件流的问题,有点难度
- 为什么我的机器上<%@ Import "System.Data.ADO"%>编译通不过?
- 怎么我刚把一个RequiredFieldValidator控件的display属性一改就出现错误,然后整个vs.net都关闭了,做都做不下去了啊,怎么办?
- 水晶报表”登陆失败”﹐求救﹗﹗﹗﹗
private void showfile(string commandstr)
{
string filesize,filename;
byte[] content;
SqlConnection conn=new SqlConnection(con);
SqlCommand cmd=new SqlCommand(commandstr,conn);
conn.Open();
SqlDataReader sr;
sr=cmd.ExecuteReader();
if(sr.Read())
{
content=(byte[])sr["SC_image"];
filesize=content.Length.ToString();
filename=Common.Util.Get_filename(sr["source_file_name"].ToString());
if(sr["image_type"].ToString()=="application/pdf")
filename="x.pdf";
Response.ContentType = sr["image_type"].ToString();
Response.AddHeader("Content-Length",filesize);
Response.AddHeader("Content-Disposition", "inline;filename="+filename);
Response.BinaryWrite(content);
}
sr.Close();
conn.Close();
}
public void openfile(string str_file_path_name)
{
System.IO.FileInfo MyFileInfo;
long StartPos = 0, FileSize;
string str_extension;
MyFileInfo = new System.IO.FileInfo(str_file_path_name);
str_extension=MyFileInfo.Extension;
str_extension=str_extension.Substring(1);
FileSize = MyFileInfo.Length;
HttpContext.Current.Response.Clear();
//根据不同的类型设置ContentType属性,以便用相应程序打开文件。
HttpContext.Current.Response.ContentType=open_file_application(str_extension);
//打开文件
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline;filename='" + str_file_path_name + "'");
HttpContext.Current.Response.WriteFile(str_file_path_name, StartPos, FileSize);
HttpContext.Current.Response.End(); }