文件上传后,保存在数据库中,读取出来时利用aspx程序直接显示,问:程序能否自动修改“保存文件名”?
C#写的aspx脚本,
把文件上传到服务器上,直接保存到SQL Server数据库中,用FileType保存上传文件的ContentType,用MyFile保存文件的二进制代码,而后使用一个showfile.aspx页面直接把文件显示出来,显示时设置("Content-Type")的内容。
经过测试,发现运行良好,如果上传的是.doc文件,ie会直接利用ole技术用word打开该文件。
不过目前碰到一个问题,如果上传的是.rar文件,例如a.rar,则Content-Type值为application/octet-stream,这时候用showfile.aspx显示时,会弹出保存窗口,可是默认的文件名都是showfile.aspx,能否有什么技术,让保存时候的文件名和上传时候的一样?
小弟在这多谢了!
附ShowFile.aspx:
<% @Page Language="C#" %>
<% @Import Namespace="System.IO" %>
<% @ Import Namespace="System.Data" %>
<% @ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
private void Page_Load(Object sender, EventArgs e) {
string sql="SELECT * FROM TestFiles WHERE ID = '" + Request.QueryString["ID"] + "'";
SqlConnection connection = new SqlConnection("Server=.;uid=sa;pwd=;Database=TestUploadFile");
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
SqlDataReader dr = command.ExecuteReader();
if(dr.Read()){
Response.Clear();
Response.AddHeader("Content-Type",dr["FileType"].ToString());
Response.BinaryWrite((byte[])dr["MyFile"]);
}
dr.Close();
connection.Close();
}
</script>